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
PHPMyAdmin 快速配置方法
May 11 PHP
php+mysql事务rollback&amp;commit示例
Feb 08 PHP
解析crontab php自动运行的方法
Jun 24 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
php有道翻译api调用方法实例
Dec 22 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
php实现表单提交上传文件功能
May 28 PHP
PHP实现简易计算器功能
Aug 28 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 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 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
JS替换文本域内的回车示例
2014/02/18 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
python使用append合并两个数组的方法
2015/04/28 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
详解python-图像处理(映射变换)
2019/03/22 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
Flask配置Cors跨域的实现
2019/07/12 Python
安装docker-compose的两种最简方法
2019/07/30 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
学校安全教育制度
2014/01/31 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
永远是春天观后感
2015/06/12 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书