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中上传大体积文件时需要的设置
Oct 09 PHP
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
PHP 编写的 25个游戏脚本
May 11 PHP
PHP缓存技术的使用说明
Aug 06 PHP
PHP笔记之:基于面向对象设计的详解
May 14 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
Python编程实现蚁群算法详解
2017/11/13 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
python3下pygame如何实现显示中文
2020/01/11 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
酒店保安员岗位职责
2014/01/31 职场文书
大学生个人自荐信
2014/02/24 职场文书
大学军训感言800字
2014/02/27 职场文书
优秀教师演讲稿
2014/05/06 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
北京天坛导游词
2015/02/12 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
导游词之千岛湖
2019/09/23 职场文书