PHP是一個開源服務器端腳本語言,最初這三個字母代表的是“Personal Home Page”,而現在則代表的是“PHP:Hypertext Preprocessor”,它是個遞歸首字母縮寫。它是一個跨平台腳本語言,深受C、C++和Java的影響。

在 Linux 命令行中運行 PHP 代碼
PHP的語法和C、Java以及帶有一些PHP特性的Perl變成語言中的語法十分相似,它當下大約正被2.6億個網站所使用,當前最新的穩定版本是PHP版本5.6.10。
PHP是HTML的嵌入腳本,它便於開發人員快速寫出動態生成的頁面。PHP主要用於服務器端(而Javascript則用於客戶端)以通過HTTP生成動態網頁,然而,當你知道可以在Linux終端中不需要網頁瀏覽器來執行PHP時,你或許會大為驚訝。
本文將闡述PHP腳本語言的命令行方面。
1. 在安裝完PHP和Apache2后,我們需要安裝PHP命令行解釋器。
# apt-get install php5-cli [Debian 及類似系統]# yum install php-cli [CentOS 及類似系統]
接下來我們通常要做的是,在/var/www/html(這是 Apache2 在大多數發行版中的工作目錄)這個位置創建一個內容為 <?php phpinfo(); ?>,名為 infophp.php 的文件來測試(PHP是否安裝正確),執行以下命令即可。
# echo '<?php phpinfo(); ?>' > /var/www/html/infophp.php
然后,將瀏覽器訪問 http://127.0.0.1/infophp.php ,這將會在網絡瀏覽器中打開該文件。

檢查PHP信息
不需要任何瀏覽器,在Linux終端中也可以獲得相同的結果。在Linux命令行中執行/var/www/html/infophp.php,如:
# php -f /var/www/html/infophp.php

從命令行檢查PHP信息
由於輸出結果太大,我們可以通過管道將上述輸出結果輸送給 less 命令,這樣就可以一次輸出一屏了,命令如下:
# php -f /var/www/html/infophp.php | less

檢查所有PHP信息
這里,‘-f‘選項解析並執行命令后跟隨的文件。
2. 我們可以直接在Linux命令行使用phpinfo()這個十分有價值的調試工具而不需要從文件來調用,只需執行以下命令:
# php -r 'phpinfo();'

PHP調試工具
這里,‘-r‘ 選項會讓PHP代碼在Linux終端中不帶<和>標記直接執行。
3. 以交互模式運行PHP並做一些數學運算。這里,‘-a‘ 選項用於以交互模式運行PHP。
# php -aInteractive shellphp > echo 2+3;5php > echo 9-6;3php > echo 5*4;20php > echo 12/3;4php > echo 12/5;2.4php > echo 2+3-1;4php > echo 2+3-1*3;2php >exit
輸入 ‘exit‘ 或者按下 ‘ctrl+c‘ 來關閉PHP交互模式。

啟用PHP交互模式
4. 你可以僅僅將PHP腳本作為shell腳本來運行。首先,創建在你當前工作目錄中創建一個PHP樣例腳本。
# echo -e '#!/usr/bin/php\n<?php phpinfo(); ?>' > phpscript.php
注意,我們在該PHP腳本的第一行使用#!/usr/bin/php,就像在shell腳本中那樣(/bin/bash)。第一行的#!/usr/bin/php告訴Linux命令行用 PHP 解釋器來解析該腳本文件。
其次,讓該腳本可執行:
# chmod 755 phpscript.php
接着來運行它,
# ./phpscript.php
5. 你可以完全靠自己通過交互shell來創建簡單函數,這你一定會被驚到了。下面是循序漸進的指南。
開啟PHP交互模式。
# php -a
創建一個函數,將它命名為 addition。同時,聲明兩個變量 $a 和 $b。
php >function addition ($a, $b)
使用花括號來在其間為該函數定義規則。
php >{
定義規則。這里,該規則講的是添加這兩個變量。
php { echo $a + $b;
所有規則定義完畢,通過閉合花括號來封裝規則。
php {}
測試函數,添加數字4和3,命令如下:
php > var_dump (addition(4,3));
樣例輸出
7NULL
你可以運行以下代碼來執行該函數,你可以測試不同的值,你想來多少次都行。將里頭的 a 和 b 替換成你自己的值。
php > var_dump (addition(a,b));
php > var_dump (addition(9,3.3));
樣例輸出
12.3NULL

創建PHP函數
你可以一直運行該函數,直至退出交互模式(ctrl+z)。同時,你也應該注意到了,上面輸出結果中返回的數據類型為 NULL。這個問題可以通過要求 php 交互 shell用 return 代��� echo 返回結果來修復。
只需要在上面的函數的中 ‘echo‘ 聲明用 ‘return‘ 來替換
替換
php { echo $a + $b;
為
php {return $a + $b;
剩下的東西和原理仍然一樣。
這里是一個樣例,在該樣例的輸出結果中返回了正確的數據類型。

PHP函數
永遠都記住,用戶定義的函數不會從一個shell會話保留到下一個shell會話,因此,一旦你退出交互shell,它就會丟失了。
6. 設置PHP命令行提示符
要設置PHP命令行提示,你需要在Linux終端中使用下面的php -a(啟用PHP交互模式)命令開啟一個PHP交互shell。
$ php -a
然后,設置任何東西(比如說Hi Tecmint ::)作為PHP交互shell的命令提示符,操作如下:
php >#cli.prompt=Hi Tecmint ::

啟用PHP交互Shell
同時,你也可以設置當前時間作為你的命令行提示符,操作如下:
php >#cli.prompt=`echo date('H:m:s');` >22:15:43>
7. 每次輸出一屏
在我們上一篇文章中,我們已經在原始命令中通過管道在很多地方使用了less命令。通過該操作,我們可以在那些不能一屏全部輸出的地方獲得分屏顯示。但是,我們可以通過配置php.ini文件,設置pager的值為less以每次輸出一屏,操作如下:
$ php -aphp >#cli.pager=less

限制PHP屏幕輸出
這樣,下次當你運行一個命令(比如說條調試器phpinfo();)的時候,而該命令的輸出內容又太過龐大而不能固定在一屏,它就會自動產生適合你當前屏幕的輸出結果。
php > phpinfo();

PHP信息輸出
8. 建議和TAB補全
PHP shell足夠智能,它可以顯示給你建議和進行TAB補全,你可以通過TAB鍵來使用該功能。如果對於你想要用TAB補全的字符串而言有多個選項,那么你需要使用兩次TAB鍵來完成,其它情況則使用一次即可。
如果有超過一個的可能性,請使用兩次TAB鍵。
php > ZIP [TAB][TAB]
如果只有一個可能性,只要使用一次TAB鍵。
php >#cli.pager [TAB]
你可以一直按TAB鍵來獲得建議的補全,直到該值滿足要求。所有的行為都將記錄到~/.php-history文件。
要檢查你的PHP交互shell活動日志,你可以執行:
$ nano ~/.php_history | less

檢查PHP交互Shell日志
9. 你可以在PHP交互shell中使用顏色,你所需要知道的僅僅是顏色代碼。
使用echo來打印各種顏色的輸出結果,類似這樣:
php > echo "color_code1 TEXT second_color_code";
具體來說是:
php > echo "\033[0;31m Hi Tecmint \x1B[0m";

在PHP Shell中啟用彩色
到目前為止,我們已經看到,按回車鍵意味着執行命令,然而PHP Shell中各個命令結尾的分號是必須的。
10. 在PHP shell中用basename()輸出路徑中最后一部分
PHP shell中的basename函數可以從給出的包含有到文件或目錄路徑的最后部分。
basename()樣例#1和#2。
php > echo basename("/var/www/html/wp/wp-content/plugins");php > echo basename("www.tecmint.com/contact-us.html");
上述兩個樣例將輸出:
pluginscontact-us.html

在PHP中打印基本名稱
11. 你可以使用PHP交互shell在你的桌面創建文件(比如說test1.txt),就像下面這么簡單
php> touch("/home/avi/Desktop/test1.txt");
我們已經見識了PHP交互shell在數學運算中有多優秀,這里還有更多一些例子會令你吃驚。
12. 使用PHP交互shell打印比如像tecmint.com這樣的字符串的長度
strlen函數用於獲取指定字符串的長度。
php > echo strlen("tecmint.com");

在PHP中打印字符串長度
13. PHP交互shell可以對數組排序,是的,你沒聽錯
聲明變量a,並將其值設置為array(7,9,2,5,10)。
php > $a=array(7,9,2,5,10);
對數組中的數字進行排序。
php > sort($a);
以排序后的順序打印數組中的數字,同時打印序號,第一個為[0]。
php > print_r($a);Array([0]=>2[1]=>5[2]=>7[3]=>9[4]=>10)

在PHP中對數組排序
14. 在PHP交互Shell中獲取π的值
php > echo pi();3.1415926535898
15. 打印某個數比如32的平方根
php > echo sqrt(150);12.247448713916
16. 從0-10的范圍內挑選一個隨機數
php > echo rand(0,10);

在PHP中獲取隨機數
17. 獲取某個指定字符串的md5校驗和sha1校驗,例如,讓我們在PHP Shell中檢查某個字符串(比如說avi)的md5校驗和sha1校驗,並交叉校驗bash shell生成的md5校驗和sha1校驗的結果。
php > echo md5(avi);3fca379b3f0e322b7b7967bfcfb948adphp > echo sha1(avi);8f920f22884d6fea9df883843c4a8095a2e5ac6f
$ echo -n avi | md5sum3fca379b3f0e322b7b7967bfcfb948ad-$ echo -n avi | sha1sum8f920f22884d6fea9df883843c4a8095a2e5ac6f-

在PHP中檢查md5校驗和sha1校驗
http://www.tecmint.com/run-php-codes-from-linux-commandline/
http://www.tecmint.com/execute-php-codes-functions-in-linux-commandline/
