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开发规范手册之PHP代码规范详解
Jan 13 PHP
php遍历数组的方法分享
Mar 22 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
php生成动态验证码gif图片
Oct 19 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
php 获取xml接口数据的处理方法
May 31 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 PHP
PHP获取真实IP及IP模拟方法解析
Nov 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 超链接 抓取实现代码
2009/06/29 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
node.js实现快速截图
2016/08/27 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
vue 组件中slot插口的具体用法
2018/04/03 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
举例介绍Python中的25个隐藏特性
2015/03/30 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python基于百度云文字识别API
2018/12/13 Python
Python简单I/O操作示例
2019/03/18 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
详解Python的三种拷贝方式
2020/02/11 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
详解python的变量缓存机制
2021/01/24 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
2015年民主评议党员工作总结
2015/05/19 职场文书
python urllib库的使用详解
2021/04/13 Python
对Golang中的FORM相关字段理解
2021/05/02 Golang
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL