php命令行(cli)模式下报require 加载路径错误的解决方法


Posted in PHP onNovember 23, 2015

今天,同事突然告诉我,我写的一个做计划任务的php脚本执行总是不成功。

脚本本身很简单,里面只有包含了几个库文件并执行了一个函数,函数应该没有错误,这个函数在别处也调用过,没有问题。我在本地用浏览器访问页面,执行成功,看来没有问题,我有点怀疑是同事的计划任务的问题。我又打开命令行,用php直接执行脚本,这回报错了,是require 包含文件错误,看来是路径不对。

不明白是什么原因引起的,只是从报错来看是路径不对,我猜测是跟相对路径有关,于是把相对路径的全部改成绝对路径,再执行,问题解决。

在百度上搜索之后,知道是用php执行脚本时,执行脚本的位置是当前执行php命令的路径,所以相对路径就不对了。解决问题的办法有两个:

一、改用绝对路径,这个比较麻烦,所有包含的文件包括直接包含的文件里包含的文件路径,有一个不对就有可能出错,所以只有当执行文件比较简单的时候可用。

二、使用chdir函数,改变当前执行目录,把目录改为文件所在目录,chdir(dirname(__FILE__));

最后,简单介绍下PHP的cli命令行模式吧

首先,进入PHP的CLI(Command line interface) mode

cyguin-> $ ./php --ini(显示配置文件信息)

将显示:

configuration file(php.ini) path: c:/Windows
Loaded configuration file: c:/wamp/bin/php/php5.3.0/php.ini
scan for additional .ini files in: (none)
additional .ini files parsed: (none)

$./php --help (会显示PHP具体信息)
$./php --rf <name> (显示<name>函数的信息)
$./php --fc <name> (显示<name>类的信息)
$./php --re <name> (显示<name>扩展的信息)
$./php --ri <name> (显示<name>扩展的配置)

$./php -l <file> : 检查语法
如:$./php -l c:/wamp/www/1.php 
运行结果: No Syntax errors detected in xxx

$./php -v :显示版本信息和运行模式cgi/cli
运行结果:
PHP 5.3.0 (cli) (built: Jun 29 2009 21:25:23)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

$./php -f <file>:解析并执行文件
如:$./php -f c:/wamp/www/1.php

$./php -h :显示帮助文件

$./php -r <code> : 运行PHP代码,不需要使用<?php ?>标签
如:$./php -r 'print("hello!");' 或 $./php -r 'echo "hello!";'
运行结果: hello!

$./php -a :进入交互模式
在linux下会出现:
php>
在windows下:
需要输入:

<?php
echo "hello world!";
?>

然后ctl+c,以获得输出。
在PHP5.3.0中,不能直接这样用,因为不能直接得到结果。

<?php
echo "hello world!";
?>

先输入ctl+z,然后再输入ctl+c,就会得到结果。

$./php -c : 指定查找php.ini的位置,或者指定一个特定的ini文件。

$./php -n : 不使用php.ini

$./php -d foo [=bar] : 定义INI文件中foo entry的值是bar

$./php -m : 显示所有的模块,php modules和zend modules

$./php -e : Generate extended information for debugger/profiler

$./php -B <begin_code> : 处理标准输入签执行的代码。PHP5新加。
如:
$./php -B 'echo "hello world";'
输出结果:hello world

$./php -R <code> : 为每一行执行的php代码。PHP5新加。

$./php -F <file> :

$./php -H <end_code> : 处理完输入后执行的代码

$./php -s : 显示HTML语法高亮的代码

$./php -w : 得到去掉空格和注释后的代码
如:
$./php -w c:/www/1.php

$./php -z <file> : 加载Zend扩展文件

$pwd :显示当前路径

--enable-cli, --enable-cgi

PHP 相关文章推荐
PHP实现Socket服务器的代码
Apr 03 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
php入门学习知识点一 PHP与MYSql连接与查询
Jul 14 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
使用php清除bom示例
Mar 03 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
thinkPHP框架自动填充原理与用法分析
Apr 03 PHP
PHP的mysqli_ssl_set()函数讲解
Jan 23 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
Oct 30 PHP
PHP语法小结之基础和变量
Nov 22 #PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 #PHP
PHP中使用array函数新建一个数组
Nov 19 #PHP
PHP新建类问题分析及解决思路
Nov 19 #PHP
php有效防止同一用户多次登录
Nov 19 #PHP
带你了解PHP7 性能翻倍的关键
Nov 19 #PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 #PHP
You might like
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
PHP技术开发技巧分享
2010/03/23 PHP
php的memcached客户端memcached
2011/06/14 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python切换pip安装源的方法详解
2016/11/18 Python
微信跳一跳游戏python脚本
2020/04/01 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python全栈知识点总结
2019/07/01 Python
银行会计财务工作个人的自我评价
2013/10/29 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
苏州园林导游词
2015/02/03 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
python - asyncio异步编程
2021/04/06 Python
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
python中对列表的删除和添加方法详解
2022/02/24 Python
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server
Nginx如何配置根据路径转发详解
2022/07/23 Servers