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静态新闻列表自动生成代码
Jun 14 PHP
用php实现的获取网页中的图片并保存到本地的代码
Jan 05 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
php目录操作实例代码
Feb 21 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
PHP生成等比缩略图类和自定义函数分享
Jun 25 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
基于swoole实现多人聊天室
Jun 14 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
laravel框架中间件简单使用方法示例
Jan 25 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
用PHP创建PDF中文文档
2006/10/09 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
用JS控制回车事件的代码
2011/02/20 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
python自动翻译实现方法
2016/05/28 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
python是怎么被发明的
2020/06/15 Python
python3访问字典里的值实例方法
2020/11/18 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
HTML5新增加的功能详解
2016/09/05 HTML / CSS
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
库房保管员岗位职责
2014/04/07 职场文书
个人四风问题整改措施
2014/10/24 职场文书
详解Python类和对象内容
2021/06/22 Python
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB