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 相关文章推荐
10条PHP编程习惯助你找工作
Sep 29 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
9个比较实用的php代码片段
Mar 15 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 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
Terran兵种对照表
2020/03/14 星际争霸
PHP常用代码
2006/11/23 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
linux下安装easy_install的方法
2013/02/10 Python
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python守护进程用法实例分析
2015/06/04 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
大学生演讲稿
2014/04/25 职场文书
小学校本培训方案
2014/06/06 职场文书
中学生运动会口号
2014/06/07 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS