php命令行(cli)模式下報(bào)require 加載路徑錯(cuò)誤的解決方法
今天,同事突然告訴我,我寫(xiě)的一個(gè)做計(jì)劃任務(wù)的php腳本執(zhí)行總是不成功。
腳本本身很簡(jiǎn)單,里面只有包含了幾個(gè)庫(kù)文件并執(zhí)行了一個(gè)函數(shù),函數(shù)應(yīng)該沒(méi)有錯(cuò)誤,這個(gè)函數(shù)在別處也調(diào)用過(guò),沒(méi)有問(wèn)題。我在本地用瀏覽器訪問(wèn)頁(yè)面,執(zhí)行成功,看來(lái)沒(méi)有問(wèn)題,我有點(diǎn)懷疑是同事的計(jì)劃任務(wù)的問(wèn)題。我又打開(kāi)命令行,用php直接執(zhí)行腳本,這回報(bào)錯(cuò)了,是require 包含文件錯(cuò)誤,看來(lái)是路徑不對(duì)。
不明白是什么原因引起的,只是從報(bào)錯(cuò)來(lái)看是路徑不對(duì),我猜測(cè)是跟相對(duì)路徑有關(guān),于是把相對(duì)路徑的全部改成絕對(duì)路徑,再執(zhí)行,問(wèn)題解決。
在百度上搜索之后,知道是用php執(zhí)行腳本時(shí),執(zhí)行腳本的位置是當(dāng)前執(zhí)行php命令的路徑,所以相對(duì)路徑就不對(duì)了。解決問(wèn)題的辦法有兩個(gè):
一、改用絕對(duì)路徑,這個(gè)比較麻煩,所有包含的文件包括直接包含的文件里包含的文件路徑,有一個(gè)不對(duì)就有可能出錯(cuò),所以只有當(dāng)執(zhí)行文件比較簡(jiǎn)單的時(shí)候可用。
二、使用chdir函數(shù),改變當(dāng)前執(zhí)行目錄,把目錄改為文件所在目錄,chdir(dirname(__FILE__));
最后,簡(jiǎn)單介紹下PHP的cli命令行模式吧
首先,進(jìn)入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 (會(huì)顯示PHP具體信息)
$./php --rf <name> (顯示<name>函數(shù)的信息)
$./php --fc <name> (顯示<name>類(lèi)的信息)
$./php --re <name> (顯示<name>擴(kuò)展的信息)
$./php --ri <name> (顯示<name>擴(kuò)展的配置)
$./php -l <file> : 檢查語(yǔ)法
如:$./php -l c:/wamp/www/1.php
運(yùn)行結(jié)果: No Syntax errors detected in xxx
$./php -v :顯示版本信息和運(yùn)行模式cgi/cli
運(yùn)行結(jié)果:
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>:解析并執(zhí)行文件
如:$./php -f c:/wamp/www/1.php
$./php -h :顯示幫助文件
$./php -r <code> : 運(yùn)行PHP代碼,不需要使用<?php ?>標(biāo)簽
如:$./php -r 'print("hello!");' 或 $./php -r 'echo "hello!";'
運(yùn)行結(jié)果: hello!
$./php -a :進(jìn)入交互模式
在linux下會(huì)出現(xiàn):
php>
在windows下:
需要輸入:
<?php echo "hello world!"; ?>
然后ctl+c,以獲得輸出。
在PHP5.3.0中,不能直接這樣用,因?yàn)椴荒苤苯拥玫浇Y(jié)果。
<?php echo "hello world!"; ?>
先輸入ctl+z,然后再輸入ctl+c,就會(huì)得到結(jié)果。
$./php -c : 指定查找php.ini的位置,或者指定一個(gè)特定的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> : 處理標(biāo)準(zhǔn)輸入簽執(zhí)行的代碼。PHP5新加。
如:
$./php -B 'echo "hello world";'
輸出結(jié)果:hello world
$./php -R <code> : 為每一行執(zhí)行的php代碼。PHP5新加。
$./php -F <file> :
$./php -H <end_code> : 處理完輸入后執(zhí)行的代碼
$./php -s : 顯示HTML語(yǔ)法高亮的代碼
$./php -w : 得到去掉空格和注釋后的代碼
如:
$./php -w c:/www/1.php
$./php -z <file> : 加載Zend擴(kuò)展文件
$pwd :顯示當(dāng)前路徑
--enable-cli, --enable-cgi
- php cli模式學(xué)習(xí)(PHP命令行模式)
- php設(shè)計(jì)模式之命令模式使用示例
- php設(shè)計(jì)模式 Command(命令模式)
- php單件模式結(jié)合命令鏈模式使用說(shuō)明
- 利用PHP命令行模式采集股票趨勢(shì)信息
- php設(shè)計(jì)模式 Command(命令模式)
- php設(shè)計(jì)模式之命令模式的應(yīng)用詳解
- 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)命令模式(command)
- PHP設(shè)計(jì)模式之命令模式的深入解析
- 老生常談PHP面向?qū)ο笾钅J?必看篇)
- PHP命令Command模式用法實(shí)例分析
相關(guān)文章
PHP的mysqli_query參數(shù)MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的區(qū)別
這篇文章主要介紹了PHP的mysqli_query參數(shù)MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的區(qū)別,本文給出了這兩個(gè)參數(shù)的5個(gè)區(qū)別,需要的朋友可以參考下2014-09-09PHP基于imagick擴(kuò)展實(shí)現(xiàn)合成圖片的兩種方法【附imagick擴(kuò)展下載】
這篇文章主要介紹了PHP基于imagick擴(kuò)展實(shí)現(xiàn)合成圖片的兩種方法,結(jié)合實(shí)例形式分析了php使用imagick擴(kuò)展進(jìn)行圖片合并的具體操作方法與相關(guān)實(shí)現(xiàn)技巧,并附帶imagick擴(kuò)展下載地址與配置方法,需要的朋友可以參考下2017-11-11探討php define()函數(shù)及defined()函數(shù)使用詳解
本篇文章是對(duì)php中define()函數(shù)及defined()函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06使用Huagepage和PGO來(lái)提升PHP7的執(zhí)行性能
這篇文章主要介紹了使用Huagepage和PGO來(lái)提升PHP7的執(zhí)行性能的相關(guān)方案,來(lái)自于注明的PHP開(kāi)發(fā)組成員Laruence的相關(guān)研究,需要的朋友可以參考下2015-11-11PHP 和 MySQL 開(kāi)發(fā)的 8 個(gè)技巧
PHP 和 MySQL 開(kāi)發(fā)的 8 個(gè)技巧...2007-01-01