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模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
php json与xml序列化/反序列化
Oct 28 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
Web程序工作原理详解
Dec 25 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 PHP
php png失真的原因及解决办法
Nov 17 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
HTTP 304错误的详细讲解
2013/11/13 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
一篇.NET面试题
2014/09/29 面试题
客服工作职责
2013/12/11 职场文书
英语教学随笔感言
2014/02/20 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers