php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法


Posted in PHP onMay 25, 2015

在php命令行下执行.php文件时,执行环境的工作目录(getcwd( ))是php命令程序(php.exe)所在目录,所以如果想在文件内使用相对路径时,要先切换当前的工作目录才行。

小测试程序:

<?php

 $oldpath = getcwd();    // 原始工作目录 php.exe所在目录

 $path = dirname(__FILE__);    

 chdir($path);           // 切换工作目录为当前文件所在目录

 $fpath = "forum/readme.txt";

 

 $fp = fopen($fpath, "a+b");    // 如果不切换工作目录这里会报找不到文件的错误

 fwrite($fp, "oldpath:".$oldpath."-newpath:".getcwd());

 fclose($fp);

?>

    需要用crotab定时执行的程序也会有这下问题。可以参考下面这篇文章:

使用php脚本写了一个脚本,需要在crontab中定期运行,但是出现如下错误

代码如下:

/var/www/html/bt/e/BtSys:.:/usr/share/pear:/usr/share/phpPHP Warning: require(../class/connect.php): failed to open stream: No such file or directory in /var/www/html/bt/e/BtSys/torrents-scrape.php on line 17 

PHP Fatal error: require(): Failed opening required '../class/connect.php' (include_path='/var/www/html/bt/e/BtSys:.:/usr/share/pear:/usr/share/php') in /var/www/html/bt/e/BtSys/torrents-scrape.php on line 17

尝试解决方法1 加入如下代码
// setting include path 

$cur_dir=getcwd(); 

$cur_dir=$basedir = dirname(__FILE__); 

$path = ini_get('include_path'); 

ini_set("include_path", "$cur_dir:$path"); 

$path = ini_get('include_path'); 

//echo $path; 

require(../class/a.php) 

require(../class/b.php) 

...............

运行失败

尝试解决方法2 加入如下代码

复制代码代码如下:

$cur_dir = dirname(__FILE__); 

chdir($cur_dir); 

require(../class/a.php) 

require(../class/b.php)

运行成功

总结: 在require 时,如果是相对目录,在crontab 中运行php脚本,要进入到脚本所在目录才可以

PHP 相关文章推荐
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
PHP可变函数的使用详解
Jun 14 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
PHP explode()函数用法讲解
Feb 15 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
PHP SOCKET编程详解
May 22 #PHP
fckeditor上传文件按日期存放及重命名方法
May 22 #PHP
php读取csc文件并输出
May 21 #PHP
php返回当前日期或者指定日期是周几
May 21 #PHP
php实现随机显示图片方法汇总
May 21 #PHP
php动态函数调用方法
May 21 #PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 #PHP
You might like
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
php中动态修改ini配置
2014/10/14 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
原生js开发的日历插件
2017/02/04 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
职务聘任书范文
2014/03/29 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python