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面试题附答案
Jan 07 PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
基于php下载文件的详解
Jun 02 PHP
简单的cookie计数器实现源码
Jun 07 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
深入分析PHP优化及注意事项
Jul 04 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
php中try catch捕获异常实例详解
Aug 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编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
医科大学生的自我评价
2013/12/04 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
农业开发项目建议书
2014/05/16 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python