摘要:命令行參數(shù)詳解查看的所有命令行參數(shù),使用命令。在命令行參數(shù)中,提供了參數(shù),使用該參數(shù),可以列出當前的配置文件信息。
PHP作為一門web開發(fā)語言,通常情況下我們都是在Web Server中運行PHP,使用瀏覽器訪問,因此很少關(guān)注其命令行操作以及相關(guān)參數(shù)的使用,但是,特別是在類Unix操作系統(tǒng)上,PHP可以作為一門腳本語言執(zhí)行與shell類似的處理任務(wù)。
php命令行(CLI)參數(shù)詳解
查看PHP的所有命令行參數(shù),使用php -h命令。我們將會對大部分常用的命令行參數(shù)進行一一解釋,以加深對PHP能力的認識,更加快捷的在服務(wù)端命令行下使用PHP或者調(diào)試各種因為對環(huán)境不熟悉而出現(xiàn)的問題。
-a 以交互式shell模式運行
-c
-n 指定不使用php.ini文件
-d foo[=bar] 定義一個INI實體,key為foo,value為"bar"
-e 為調(diào)試和分析生成擴展信息
-f
-h 打印幫助
-i 顯示PHP的基本信息
-l 進行語法檢查 (lint)
-m 顯示編譯到內(nèi)核的模塊
-r 運行PHP代碼,不需要使用標簽 ..?>
-B
-R 對輸入的沒一行作為PHP代碼運行
-F
-E
-H Hide any passed arguments from external tools.
-S
-t
-s 輸出HTML語法高亮的源碼
-v 輸出PHP的版本號
-w 輸出去掉注釋和空格的源碼
-z
args... 傳遞給要運行的腳本的參數(shù). 當?shù)谝粋€參數(shù)以-開始或者是腳本是從標準輸入讀取的時候,使用--參數(shù)
--ini 顯示PHP的配置文件名
--rf
--rc
--re
--rz
--ri
上面列出了PHP命令所有的參數(shù)及其注釋,接下來,我們將對其中比較常用的參數(shù)舉例說明。
以交互式shell模式運行php
用過 Python 的朋友對Python的交互式shell比較熟悉,在命令行下,如果我們直接輸入python命令,則會進入python的交互式shell程序,接下來就可以交互式的執(zhí)行一些計算任務(wù)。
在PHP命令行中,同樣提供了類似的功能,使用-a參數(shù)即可進入交互shell模式。
在該shell中,我們可以執(zhí)行一些簡單的任務(wù),而不需要總是新建一個php文件。
更詳細的使用說明,請參考官方文檔
運行內(nèi)建的Web服務(wù)器
從PHP 5.4.0開始,PHP的命令行模式提供了一個內(nèi)建的web服務(wù)器。使用-S開始運行web服務(wù)。
假設(shè)當前我們處在目錄/Users/mylxsw/codes/php/aicode/demo,在該目錄中,存在index.php文件。
$ ls
index.php
$ cat index.php
echo "Hello, PHPER!";
在該目錄中,執(zhí)行以下命令可以啟動內(nèi)建web服務(wù)器,并且默認以當前目錄為工作目錄
$ php -S localhost:8000
PHP 5.6.3 Development Server started at Wed Jun 10 15:49:41 2015
Listening on http://localhost:8000
Document root is /Users/mylxsw/codes/php/aicode/demo
Press Ctrl-C to quit.
我們另外開啟一個shell窗口,請求http://localhost:8000/即可看到腳本輸出
$ curl -is http://localhost:8000/
HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/5.6.3
Content-type: text/html; charset=UTF-8
Hello, PHPER!
在web服務(wù)運行的窗口,可以看到輸出的日志信息
![請輸入代碼][3]
以上我們在啟動內(nèi)建服務(wù)器的時候,只指定了-S參數(shù)讓PHP以web服務(wù)器的方式運行,這時,PHP會使用當前目錄作為工作目錄,因此回到當前目錄下尋找請求的文件,我們還可以使用-t參數(shù)指定其它的目錄作為工作目錄(文檔根目錄)。
http://php.net/manual/en/feat...
查找PHP的配置文件
在有的時候,由于服務(wù)器上軟件安裝比較混亂,我們可能安裝了多個版本的PHP環(huán)境,這時候,如何定位我們的PHP程序使用的是那個配置文件就比較重要了。在PHP命令行參數(shù)中,提供了--ini參數(shù),使用該參數(shù),可以列出當前PHP的配置文件信息。
$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/5.6
Loaded Configuration File: /usr/local/etc/php/5.6/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.6/conf.d
Additional .ini files parsed: (none)
$ /usr/local/php/bin/php --ini
Configuration File (php.ini) Path: /usr/local/php/etc/
Loaded Configuration File: /usr/local/php/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
上述的服務(wù)器上我們安裝了兩個版本的PHP,由上可以看到,使用php --ini命令可以很方便的定位當前PHP命令將會采用哪個配置文件。
查看類/函數(shù)/擴展信息
通常,我們可以使用php --info命令或者在在web服務(wù)器上的php程序中使用函數(shù)phpinfo()顯示php的信息,然后再查找相關(guān)類、擴展或者函數(shù)的信息,這樣做實在是麻煩了一些。
$ php --info | grep redis
redis
Registered save handlers => files user redis
This program is free software; you can redistribute it and/or modify
我們可以使用下列參數(shù)更加方便的查看這些信息
--rf
--rc
--re
--rz
--ri
例如,我們希望查看擴展redis的配置信息
$ php --ri redis
redis
Redis Support => enabled
Redis Version => 2.2.7
查看redis類的信息
$ php --rc redis
Class [
Constants [19] {
Constant [ integer REDIS_NOT_FOUND ] { 0 }
...
Methods [201] {
...
Method [
}
...
查看函數(shù)printf的信息
$ php --rf printf
Function [
Parameters [2] {
Parameter #0 [
Parameter #1 [
}
}
語法檢查
有時候,我們只需要檢查php腳本是否存在語法錯誤,而不需要執(zhí)行它,比如在一些編輯器或者IDE中檢查PHP文件是否存在語法錯誤。
使用-l(--syntax-check)可以只對PHP文件進行語法檢查。
$ php -l index.php
No syntax errors detected in index.php
假如此時我們的index.php中存在語法錯誤
$ php -l index.php
PHP Parse error: syntax error, unexpected "echo" (T_ECHO) in index.php on line 3
Parse error: syntax error, unexpected "echo" (T_ECHO) in index.php on line 3
Errors parsing index.php
命令行腳本開發(fā)
在使用PHP開發(fā)命令行腳本的時候,與開發(fā)web程序是明顯不同的,在web程序中,我們可以通過改變url的參數(shù),為PHP環(huán)境提供不同的輸入,但是在命令行腳本程序中如何獲取外部的輸入呢?
在使用C語言開發(fā)程序時,我們通常會在main函數(shù)中提供兩個可選的參數(shù)int main(int argc, char *argv[]),這兩個參數(shù)就是從命令行提供的輸入?yún)?shù)。在PHP中,提供了兩個全局變量$argc和$argv用于獲取命令行輸入。
$argc 包含了 $argv數(shù)組包含元素的數(shù)目 $argv 是一個數(shù)組,包含了提供的參數(shù),第一個參數(shù)總是腳本文件名稱
假設(shè)我們有一個名為console.php的命令行腳本文件
echo "命令行參數(shù)個數(shù): " . $argc . "n";
echo "命令行參數(shù):n";
foreach ($argv as $index => $arg) {
echo " {$index} : {$arg} ";
}
在命令行下執(zhí)行該腳本
$ php console.php hello world
命令行參數(shù)個數(shù): 3
命令行參數(shù):
0 : console.php 1 : hello 2 : world
可以看到,第0個參數(shù)是我們執(zhí)行的腳本名稱。需要注意的是,如果提供的第一個參數(shù)是以-開頭的話,需要在前面增加--,以告訴php這后面的參數(shù)是提供給我們的腳本的,而不是php執(zhí)行文件的(php -r "var_dump($argv);" -- -h)。
另外,在腳本中,我們可以通過php_sapi_name()函數(shù)判斷是否是在命令行下運行的
$ php -r "echo php_sapi_name(), PHP_EOL;"
cli
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/22782.html
摘要:前言函數(shù)默認構(gòu)建目標為,相關(guān)代碼在目錄下,文件中能夠找到入口函數(shù),大概流程如下命令行參數(shù)處理初始化清理工作語言系統(tǒng)編程常用手法,通過中聲明函數(shù)指針類型的字段來實現(xiàn)類似面向?qū)ο笾谐橄箢惖母拍睿谖募锌梢哉业皆摻Y(jié)構(gòu)體的定義,這里只列出部分 前言 php cli main 函數(shù) configure & make 默認構(gòu)建目標為 php-cli,相關(guān)代碼在 sapi/cli 目錄下,php_...
摘要:話說當下一共有種運行模式,分別是和模塊模式。使用,全稱進程管理器進行管理。工作原理啟動時載入進程管理器進程管理器自身初始化,啟動多個解釋器進程并等待來自的連接當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。 我們知道 workerman 程序需要在php-cli模式下運行,也就是命令行模式,這塊我們有必要了解一下。 話說PHP當下一共有4種運行模式,分別是CGI、FastCGI、...
摘要:使開發(fā)人員可以編寫高性能的異步并發(fā),服務(wù)。使用作為網(wǎng)絡(luò)通信框架,可以使企業(yè)研發(fā)團隊的效率大大提升,更加專注于開發(fā)創(chuàng)新產(chǎn)品。總之,這個庫讓可以常駐內(nèi)存,并提供了,等功能。 swoole 使 PHP 開發(fā)人員可以編寫高性能的異步并發(fā) TCP、UDP、Unix Socket、HTTP,WebSocket 服務(wù)。Swoole 可以廣泛應用于互聯(lián)網(wǎng)、移動通信、企業(yè)軟件、云計算、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(...
摘要:使開發(fā)人員可以編寫高性能的異步并發(fā),服務(wù)。使用作為網(wǎng)絡(luò)通信框架,可以使企業(yè)研發(fā)團隊的效率大大提升,更加專注于開發(fā)創(chuàng)新產(chǎn)品。總之,這個庫讓可以常駐內(nèi)存,并提供了,等功能。 swoole 使 PHP 開發(fā)人員可以編寫高性能的異步并發(fā) TCP、UDP、Unix Socket、HTTP,WebSocket 服務(wù)。Swoole 可以廣泛應用于互聯(lián)網(wǎng)、移動通信、企業(yè)軟件、云計算、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(...
閱讀 2241·2021-11-23 09:51
閱讀 1073·2021-11-22 15:35
閱讀 4831·2021-11-22 09:34
閱讀 1597·2021-10-08 10:13
閱讀 3018·2021-07-22 17:35
閱讀 2519·2019-08-30 15:56
閱讀 3079·2019-08-29 18:44
閱讀 3089·2019-08-29 15:32