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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
php实现随机显示图片方法汇总
May 21 PHP
PHP处理会话函数大总结
Aug 05 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
laravel框架如何设置公共头和公共尾
Oct 22 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
java直接调用python脚本的例子
2014/02/16 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
python 默认参数问题的陷阱
2016/02/29 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python实现快速排序的方法详解
2019/10/25 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
如何利用Python 进行边缘检测
2020/10/14 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
腾讯公司的一个sql题
2013/01/22 面试题
自我评价正确写法范文
2013/12/10 职场文书
学年自我鉴定
2014/01/16 职场文书
暑假学习心得体会
2014/09/02 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书