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 相关文章推荐
PHP6 mysql连接方式说明
Feb 09 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
Jul 03 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
PHP二维数组去重算法
Dec 17 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 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
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
原生JS实现留言板
2020/03/26 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
Python中zip()函数用法实例教程
2014/07/31 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
土地租赁意向书
2014/07/30 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏