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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
PHP的类 功能齐全的发送邮件类
Oct 09 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
在yii中新增一个用户验证的方法详解
Jun 20 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
PHP中的session安全吗?
Jan 22 PHP
thinkphp 验证码 的使用小结
May 07 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP与以太坊交互详解
Aug 24 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实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
javascript基础知识
2016/06/07 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
python实现Windows电脑定时关机
2018/06/20 Python
python用post访问restful服务接口的方法
2018/12/07 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
联想C++笔试题
2012/06/13 面试题
生产车间实习自我鉴定
2013/09/23 职场文书
2015年防汛工作总结
2015/05/15 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python