成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP命令行下的世界

calx / 3037人閱讀

摘要:命令行參數(shù)詳解查看的所有命令行參數(shù),使用命令。我們將會對大部分常用的命令行參數(shù)進(jìn)行一一解釋,以加深對能力的認(rèn)識,更加快捷的在服務(wù)端命令行下使用或者調(diào)試各種因?yàn)閷Νh(huán)境不熟悉而出現(xiàn)的問題。

PHP作為一門web開發(fā)語言,通常情況下我們都是在Web Server中運(yùn)行PHP,使用瀏覽器訪問,因此很少關(guān)注其命令行操作以及相關(guān)參數(shù)的使用,但是,特別是在類Unix操作系統(tǒng)上,PHP可以作為一門腳本語言執(zhí)行與shell類似的處理任務(wù)。

php命令行(CLI)參數(shù)詳解

查看PHP的所有命令行參數(shù),使用php -h命令。我們將會對大部分常用的命令行參數(shù)進(jìn)行一一解釋,以加深對PHP能力的認(rèn)識,更加快捷的在服務(wù)端命令行下使用PHP或者調(diào)試各種因?yàn)閷Νh(huán)境不熟悉而出現(xiàn)的問題。

-a               以交互式shell模式運(yùn)行
-c | 指定php.ini文件所在的目錄
-n               指定不使用php.ini文件
-d foo[=bar]     定義一個INI實(shí)體,key為foo,value為"bar"
-e               為調(diào)試和分析生成擴(kuò)展信息
-f         解釋和執(zhí)行文件.
-h               打印幫助
-i               顯示PHP的基本信息
-l               進(jìn)行語法檢查 (lint)
-m               顯示編譯到內(nèi)核的模塊
-r         運(yùn)行PHP代碼,不需要使用標(biāo)簽 
-B   在處理輸入之前先執(zhí)行PHP代碼
-R         對輸入的沒一行作為PHP代碼運(yùn)行
-F         Parse and execute  for every input line
-E     Run PHP  after processing all input lines
-H               Hide any passed arguments from external tools.
-S : 運(yùn)行內(nèi)建的web服務(wù)器.
-t      指定用于內(nèi)建web服務(wù)器的文檔根目錄
-s               輸出HTML語法高亮的源碼
-v               輸出PHP的版本號
-w               輸出去掉注釋和空格的源碼
-z         載入Zend擴(kuò)展文件 .

args...          傳遞給要運(yùn)行的腳本的參數(shù). 當(dāng)?shù)谝粋€參數(shù)以`-`開始或者是腳本是從標(biāo)準(zhǔn)輸入讀取的時(shí)候,使用`--`參數(shù)

--ini            顯示PHP的配置文件名

--rf       顯示關(guān)于函數(shù)  的信息.
--rc       顯示關(guān)于類  的信息.
--re       顯示關(guān)于擴(kuò)展  的信息.
--rz       顯示關(guān)于Zend擴(kuò)展  的信息.
--ri       顯示擴(kuò)展  的配置信息.

上面列出了PHP命令所有的參數(shù)及其注釋,接下來,我們將對其中比較常用的參數(shù)舉例說明。

以交互式shell模式運(yùn)行php

用過 Python 的朋友對Python的交互式shell比較熟悉,在命令行下,如果我們直接輸入python命令,則會進(jìn)入python的交互式shell程序,接下來就可以交互式的執(zhí)行一些計(jì)算任務(wù)。

在PHP命令行中,同樣提供了類似的功能,使用-a參數(shù)即可進(jìn)入交互shell模式。

在該shell中,我們可以執(zhí)行一些簡單的任務(wù),而不需要總是新建一個php文件。

更詳細(xì)的使用說明,請參考官方文檔

運(yùn)行內(nèi)建的Web服務(wù)器

PHP 5.4.0開始,PHP的命令行模式提供了一個內(nèi)建的web服務(wù)器。使用-S開始運(yùn)行web服務(wù)。

假設(shè)當(dāng)前我們處在目錄/Users/mylxsw/codes/php/aicode/demo,在該目錄中,存在index.php文件。

$ ls
index.php
$ cat index.php


在該目錄中,執(zhí)行以下命令可以啟動內(nèi)建web服務(wù)器,并且默認(rèn)以當(dāng)前目錄為工作目錄

$ 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ù)運(yùn)行的窗口,可以看到輸出的日志信息

以上我們在啟動內(nèi)建服務(wù)器的時(shí)候,只指定了-S參數(shù)讓PHP以web服務(wù)器的方式運(yùn)行,這時(shí),PHP會使用當(dāng)前目錄作為工作目錄,因此回到當(dāng)前目錄下尋找請求的文件,我們還可以使用-t參數(shù)指定其它的目錄作為工作目錄(文檔根目錄)。

更多詳細(xì)信息,請參考官方文檔。

查找PHP的配置文件

在有的時(shí)候,由于服務(wù)器上軟件安裝比較混亂,我們可能安裝了多個版本的PHP環(huán)境,這時(shí)候,如何定位我們的PHP程序使用的是那個配置文件就比較重要了。在PHP命令行參數(shù)中,提供了--ini參數(shù),使用該參數(shù),可以列出當(dāng)前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命令可以很方便的定位當(dāng)前PHP命令將會采用哪個配置文件。

查看類/函數(shù)/擴(kuò)展信息

通常,我們可以使用php --info命令或者在在web服務(wù)器上的php程序中使用函數(shù)phpinfo()顯示php的信息,然后再查找相關(guān)類、擴(kuò)展或者函數(shù)的信息,這樣做實(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       顯示關(guān)于函數(shù)  的信息.
--rc       顯示關(guān)于類  的信息.
--re       顯示關(guān)于擴(kuò)展  的信息.
--rz       顯示關(guān)于Zend擴(kuò)展  的信息.
--ri       顯示擴(kuò)展  的配置信息.

例如,我們希望查看擴(kuò)展redis的配置信息

$ php --ri redis

redis

Redis Support => enabled
Redis Version => 2.2.7

查看redis類的信息

$ php --rc redis
Class [  class Redis ] {

  - Constants [19] {
    Constant [ integer REDIS_NOT_FOUND ] { 0 }
    ...
  - Methods [201] {
    ...
    Method [  public method echo ] {
    }
    ...

查看函數(shù)printf的信息

$ php --rf printf
Function [  function printf ] {

  - Parameters [2] {
    Parameter #0 [  $format ]
    Parameter #1 [  ...$args ]
  }
}
語法檢查

有時(shí)候,我們只需要檢查php腳本是否存在語法錯誤,而不需要執(zhí)行它,比如在一些編輯器或者IDE中檢查PHP文件是否存在語法錯誤。

使用-l--syntax-check)可以只對PHP文件進(jìn)行語法檢查。

$ php -l index.php
No syntax errors detected in index.php

假如此時(shí)我們的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ā)命令行腳本的時(shí)候,與開發(fā)web程序是明顯不同的,在web程序中,我們可以通過改變url的參數(shù),為PHP環(huán)境提供不同的輸入,但是在命令行腳本程序中如何獲取外部的輸入呢?

在使用C語言開發(fā)程序時(shí),我們通常會在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的命令行腳本文件

 $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ù)判斷是否是在命令行下運(yùn)行的

$ php -r "echo php_sapi_name(), PHP_EOL;"
cli

參考文獻(xiàn)

Using PHP from the command line

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/20988.html

相關(guān)文章

  • php命令下的常用命令

    摘要:顯示編譯到內(nèi)核下的模塊顯示版本號顯示配置文件名顯示有哪些命令行命令查看類函數(shù)擴(kuò)展信息和服務(wù)器上使用一樣顯示關(guān)于函數(shù)的信息顯示關(guān)于類的信息顯示關(guān)于擴(kuò)展的信息顯示擴(kuò)展的配置信息顯示關(guān)于擴(kuò)展的信息關(guān)于命令行腳本的 1 php -m 顯示編譯到內(nèi)核下的模塊 showImg(https://segmentfault.com/img/bVHreh?w=1100&h=385); 2 php -v...

    lifefriend_007 評論0 收藏0
  • shell/命令下的光標(biāo)移動等操作快捷鍵

    摘要:轉(zhuǎn)載的命令行下不少鍵盤操作跟是類似的,也許不能說是從借鑒過來的,這些快捷的使用,誰早誰晚還不好考證,不過思路是一致的。 轉(zhuǎn)載by Hick linux 的 shell 命令行下不少鍵盤操作跟 Emacs 是類似的,也許不能說是從 Emacs 借鑒過來的,這些快捷的使用,誰早誰晚還不好考證,不過思路是一致的。之前某次突然來勁試了 C-a C-e 等,實(shí)踐了若干操作,在 SecureCR...

    waterc 評論0 收藏0
  • 最適合入門的Laravel初級教程(四)

    摘要:最適合入門的初級教程四路由可以分發(fā)請求路由中還可以引入頁面我們可以在中搞定一切了但是如果把業(yè)務(wù)邏輯都寫入到路由中那路由將龐大的難以維護(hù)于是控制器就有了很明顯的存在價(jià)值把業(yè)務(wù)邏輯寫在控制器中路由只負(fù)責(zé)轉(zhuǎn)發(fā)請求到指定的控制器即可那我們開始創(chuàng)建控 最適合入門的Laravel初級教程(四) 路由可以分發(fā)請求; 路由中還可以引入 html 頁面;我們可以在 route/web.php 中搞定一切...

    gplane 評論0 收藏0
  • 學(xué)習(xí)筆記PHP-01、Apache的下載與安裝

    下載Apache服務(wù)器 點(diǎn)我跳轉(zhuǎn)Apache下載頁面 showImg(https://segmentfault.com/img/bVbkrTn?w=1200&h=519); 然后將安裝包解壓到你想安裝的位置 我這里解壓到D:develop路徑 然后再修改D:developApache24conf目錄下的httpd.conf文件如下圖(注意斜線方向)showImg(https://segmentfa...

    blair 評論0 收藏0
  • 學(xué)習(xí)筆記PHP-01、Apache的下載與安裝

    下載Apache服務(wù)器 點(diǎn)我跳轉(zhuǎn)Apache下載頁面 showImg(https://segmentfault.com/img/bVbkrTn?w=1200&h=519); 然后將安裝包解壓到你想安裝的位置 我這里解壓到D:develop路徑 然后再修改D:developApache24conf目錄下的httpd.conf文件如下圖(注意斜線方向)showImg(https://segmentfa...

    omgdog 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<