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 相关文章推荐
mayfish 数据入库验证代码
Apr 30 PHP
php 文件上传类代码
Aug 06 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
10 个经典PHP函数
Oct 17 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
php解析url的三个示例
Jan 20 PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
PHP文件缓存类示例分享
Jan 30 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 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的配置文件php.ini
2006/10/09 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
Python OS模块常用函数说明
2015/05/23 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
Python中的asyncio代码详解
2019/06/10 Python
keras 多gpu并行运行案例
2020/06/10 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
什么时候需要进行强制类型转换
2016/09/03 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
python删除csv文件的行列
2021/04/06 Python
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL