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维护文件系统
Oct 09 PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 PHP
PHP 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
php无限遍历文件夹示例分享
Mar 04 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
YII分模块加载路由的实现方法
Oct 01 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
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
js资料prototype 属性
2007/03/13 Javascript
js 实现打印网页中定义的部分内容的代码
2010/04/01 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
深入理解python函数递归和生成器
2016/06/06 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
python K近邻算法的kd树实现
2018/09/06 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
python批量修改ssh密码的实现
2019/08/08 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
零基础小白多久能学会python
2020/06/22 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
装修五一活动策划案
2014/01/23 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
农业生产宣传标语
2014/10/08 职场文书
大学生党员自我评价
2015/03/04 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL