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 判断变量类型实现代码
Oct 23 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
PHP常用函数和常见疑难问题解答
Mar 05 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
php实现session共享的实例方法
Sep 19 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 PHP
用php如何解决大文件分片上传问题
Jul 07 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 搜索框提示(自动完成)实例代码
2012/02/05 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
基于游标的分页接口实现代码示例
2018/11/12 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
乔迁之喜主持词
2014/03/27 职场文书
安全标语大全
2014/06/10 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
护士个人年终总结
2015/02/13 职场文书
专家推荐信怎么写
2015/03/25 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
董事长秘书工作总结
2015/08/14 职场文书