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 相关文章推荐
PHP在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
通过对服务器端特性的配置加强php的安全
Oct 09 PHP
生成sessionid和随机密码的例子
Oct 09 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
php设置页面超时时间解决方法
Sep 22 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
laravel开发环境homestead搭建过程详解
Jul 03 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
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
JS验证字符串功能
2017/02/22 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
Python MD5文件生成码
2009/01/12 Python
python列表操作实例
2015/01/14 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
放飞理想演讲稿
2014/09/09 职场文书
教师节老师寄语
2015/05/28 职场文书
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python