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 无限极分类
Mar 27 PHP
php daodb插入、更新与删除数据
Mar 19 PHP
php文本转图片自动换行的方法
Mar 13 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
php实现倒计时效果
Dec 19 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
PHP的邮件群发系统phplist配置方法详细总结
Mar 30 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
PHP实现随机发扑克牌
Apr 22 PHP
php中pcntl_fork详解
Apr 01 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 FPDF类库应用实现代码
2009/03/20 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
Js中sort()方法的用法
2006/11/04 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Python帮你识破双11的套路
2019/11/11 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
美国家具网站:Cymax
2016/09/17 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
陈欧的广告词
2014/03/18 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
英语教师个人工作总结
2015/02/09 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL