PHP是一個開源服務器端腳本語言,最初這三個字母表明的是「Personal Home Page」,而如今則表明的是「PHP:Hypertext Preprocessor」,它是個遞歸首字母縮寫。它是一個跨平臺腳本語言,深受C、C++和Java的影響。php
在 Linux 命令行中運行 PHP 代碼html
PHP的語法和C、Java以及帶有一些PHP特性的Perl變成語言中的語法十分類似,它當下大約正被2.6億個網站所使用,當前最新的穩定版本是PHP版本5.6.10。linux
PHP是HTML的嵌入腳本,它便於開發人員快速寫出動態生成的頁面。PHP主要用於服務器端(而Javascript則用於客戶端)以經過HTTP生成動態網頁,然而,當你知道能夠在Linux終端中不須要網頁瀏覽器來執行PHP時,你或許會大爲驚訝。shell
本文將闡述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是否安裝正確),執行如下命令便可。bash
# echo '<?php phpinfo(); ?>' > /var/www/html/infophp.php
而後,將瀏覽器訪問 http://127.0.0.1/infophp.php ,這將會在網絡瀏覽器中打開該文件。服務器
檢查PHP信息網絡
不須要任何瀏覽器,在Linux終端中也能夠得到相同的結果。在Linux命令行中執行/var/www/html/infophp.php
,如:less
# 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 -a
Interactive shell
php > echo 2+3;
5
php > echo 9-6;
3
php > echo 5*4;
20
php > echo 12/3;
4
php > echo 12/5;
2.4
php > echo 2+3-1;
4
php > echo 2+3-1*3;
2
php >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 -a
php >#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");
上述兩個樣例將輸出:
plugins
contact-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);
3fca379b3f0e322b7b7967bfcfb948ad
php > echo sha1(avi);
8f920f22884d6fea9df883843c4a8095a2e5ac6f
$ echo -n avi | md5sum
3fca379b3f0e322b7b7967bfcfb948ad-
$ echo -n avi | sha1sum
8f920f22884d6fea9df883843c4a8095a2e5ac6f-
在PHP中檢查md5校驗和sha1校驗
http://www.tecmint.com/run-php-codes-from-linux-commandline/
http://www.tecmint.com/execute-php-codes-functions-in-linux-commandline/