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

今天,同事突然告诉我,我写的一个做计划任务的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语法小结之基础和变量 - 2015-11-25 14:11:24

最近有个H5项目的需求,需要服务端,考察过后决定用PHP实现一个HTTP服务端,于是开始重温PHP语法,顺便记录一下要点,以便随时重温。内容摘抄自w3school的PHP手册,并按照自己的理解重新进行了整理。 PHP是什么? PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词 PHP 代码在服务器上执行,而结果以纯文本返回浏览器 PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码 PHP 文件的后缀是 ".php" PHP 脚本可放置于文档中的任何位置。 PH
在php中实现验证码还是很方便的,关键点在于掌握php gd库与session的用法。 纵观网上php 生成验证码的例子,无不是php gd库与session相结合,并利用php 生成随机数的方法来完成。 PHP验证码,可以分为很多种,包括 php 图片验证码,php 随机验证码, 以及 php 中文验证码 等,根据不同的应用场合来使用不同的验证码。 这里分享一个php数字验证码,供大家参考。 4位数字验证码 /**Filename:authpage.php*/ session_start(); //sr
本文实例讲述了Ajax+PHP+MySQL登陆示例。分享给大家供大家参考。具体如下: 运行效果截图如下: 具体代码如下: 1 login.php 登录界面中,javascript脚本用ajax方式异步请求dologin.php,dologin.php负责用户信息验证(包括验证码,php生成验证码可以自行搜索).登录界面的代码如下: ?php session_start();?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt

3种php生成唯一id的方法 - 2015-11-25 14:11:05

小编在网上查了许多关于php生成唯一id方法的文章,发现有很多的方法,特整理本文与大家分享php生成唯一id的解决方法,希望大家喜欢。 1、md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2、php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。 下面方法返回结果类
下面先给大家分析php新建类的问题 index.php文件 function __autoload($_className) {require $_className.'.class.php';} //新建类??if (isset($_GET['index'])) {$m=new Main($_GET['index']);}else{$m=new Main(); }include $m-ui(); main.class.php文件 class Main{private $index;//构造方法,初始化数
在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。 接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大家一起讨论。 一. POST传值 post传值是用于html的form表单跳转的方法,很方便使用。例如: html form action='' method='' input type='text' name='name1' input type='hidden' name='name2'
PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。 array (PHP 4, PHP 5) array — 新建一个数组 说明 复制代码 代码如下: array array ([ mixed $... ] ) 返回根据参数建立的数组。参数可以用 = 运算符给出索引。
【问题描述】: 同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 session_regenerate_id(); session_register ("username") ; (2) 在用户数据库中开一个sessionid字段,重新产生session_id后,都更新该字段。 $sessionid = session_id(); $db =
下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: ?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' = 'tanteng'// 'password' = 'password');$ch = curl_init ();// print_r($ch);curl_setopt ( $ch, CURLOPT_URL, $uri );curl_setopt
下面给大家介绍phpstudy访问速度慢的解决办法。 1、修改mysql数据库链接地址为ip地址127.0.0.1。 2、使用最新版本,这个坑了我好久时间。 下面一段内容是关于phpstudy启动失败的解决办法。 php5.3、5.4和apache都是用vc9编译,电脑必须安装vc9运行库才能运行。 php5.5、5.6是vc11编译,如用php5.5、5.6必须安装vc11运行库。 vc9和vc11运行库下载: http://pan.baidu.com/s/1gd0y1Qb php5.5以上才有64位的