在 Linux 命令行中使用和執行 PHP 代碼


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

Run PHP Codes in Linux Command Line

在 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命令行解釋器。

  1. # apt-get install php5-cli [Debian 及類似系統]
  2. # yum install php-cli [CentOS 及類似系統]

接下來我們通常要做的是,在/var/www/html(這是 Apache2 在大多數發行版中的工作目錄)這個位置創建一個內容為 <?php phpinfo(); ?>,名為 infophp.php 的文件來測試(PHP是否安裝正確),執行以下命令即可。

  1. # echo '<?php phpinfo(); ?>' > /var/www/html/infophp.php

然后,將瀏覽器訪問 http://127.0.0.1/infophp.php ,這將會在網絡瀏覽器中打開該文件。

Check PHP Info

檢查PHP信息

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

  1. # php -f /var/www/html/infophp.php

Check PHP info from Commandline

從命令行檢查PHP信息

由於輸出結果太大,我們可以通過管道將上述輸出結果輸送給 less 命令,這樣就可以一次輸出一屏了,命令如下:

  1. # php -f /var/www/html/infophp.php | less

Check All PHP Info

檢查所有PHP信息

這里,‘-f‘選項解析並執行命令后跟隨的文件。

2. 我們可以直接在Linux命令行使用phpinfo()這個十分有價值的調試工具而不需要從文件來調用,只需執行以下命令:

  1. # php -r 'phpinfo();'

PHP Debugging Tool

PHP調試工具

這里,‘-r‘ 選項會讓PHP代碼在Linux終端中不帶<>標記直接執行。

3. 以交互模式運行PHP並做一些數學運算。這里,‘-a‘ 選項用於以交互模式運行PHP。

  1. # php -a
  2. Interactive shell
  3. php > echo 2+3;
  4. 5
  5. php > echo 9-6;
  6. 3
  7. php > echo 5*4;
  8. 20
  9. php > echo 12/3;
  10. 4
  11. php > echo 12/5;
  12. 2.4
  13. php > echo 2+3-1;
  14. 4
  15. php > echo 2+3-1*3;
  16. 2
  17. php >exit

輸入 ‘exit‘ 或者按下 ‘ctrl+c‘ 來關閉PHP交互模式。

Enable PHP Interactive Mode

啟用PHP交互模式

4. 你可以僅僅將PHP腳本作為shell腳本來運行。首先,創建在你當前工作目錄中創建一個PHP樣例腳本。

  1. # echo -e '#!/usr/bin/php\n<?php phpinfo(); ?>' > phpscript.php

注意,我們在該PHP腳本的第一行使用#!/usr/bin/php,就像在shell腳本中那樣(/bin/bash)。第一行的#!/usr/bin/php告訴Linux命令行用 PHP 解釋器來解析該腳本文件。

其次,讓該腳本可執行:

  1. # chmod 755 phpscript.php

接着來運行它,

  1. # ./phpscript.php

5. 你可以完全靠自己通過交互shell來創建簡單函數,這你一定會被驚到了。下面是循序漸進的指南。

開啟PHP交互模式。

  1. # php -a

創建一個函數,將它命名為 addition。同時,聲明兩個變量 $a$b

  1. php >function addition ($a, $b)

使用花括號來在其間為該函數定義規則。

  1. php >{

定義規則。這里,該規則講的是添加這兩個變量。

  1. php { echo $a + $b;

所有規則定義完畢,通過閉合花括號來封裝規則。

  1. php {}

測試函數,添加數字4和3,命令如下:

  1. php > var_dump (addition(4,3));

 

樣例輸出

  1. 7NULL

你可以運行以下代碼來執行該函數,你可以測試不同的值,你想來多少次都行。將里頭的 a 和 b 替換成你自己的值。

  1. php > var_dump (addition(a,b));

  1. php > var_dump (addition(9,3.3));

 

樣例輸出

  1. 12.3NULL

Create PHP Functions

創建PHP函數

你可以一直運行該函數,直至退出交互模式(ctrl+z)。同時,你也應該注意到了,上面輸出結果中返回的數據類型為 NULL。這個問題可以通過要求 php 交互 shell用 return 代��� echo 返回結果來修復。

只需要在上面的函數的中 ‘echo‘ 聲明用 ‘return‘ 來替換

替換

  1. php { echo $a + $b;

  1. php {return $a + $b;

剩下的東西和原理仍然一樣。

這里是一個樣例,在該樣例的輸出結果中返回了正確的數據類型。

PHP Functions

PHP函數

永遠都記住,用戶定義的函數不會從一個shell會話保留到下一個shell會話,因此,一旦你退出交互shell,它就會丟失了。

6. 設置PHP命令行提示符

要設置PHP命令行提示,你需要在Linux終端中使用下面的php -a(啟用PHP交互模式)命令開啟一個PHP交互shell。

  1. $ php -a

然后,設置任何東西(比如說Hi Tecmint ::)作為PHP交互shell的命令提示符,操作如下:

  1. php >#cli.prompt=Hi Tecmint ::

Enable PHP Interactive Shell

啟用PHP交互Shell

同時,你也可以設置當前時間作為你的命令行提示符,操作如下:

  1. php >#cli.prompt=`echo date('H:m:s');` >
  2. 22:15:43>

7. 每次輸出一屏

在我們上一篇文章中,我們已經在原始命令中通過管道在很多地方使用了less命令。通過該操作,我們可以在那些不能一屏全部輸出的地方獲得分屏顯示。但是,我們可以通過配置php.ini文件,設置pager的值為less以每次輸出一屏,操作如下:

  1. $ php -a
  2. php >#cli.pager=less

Fix PHP Screen Output

限制PHP屏幕輸出

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

  1. php > phpinfo();

PHP Info Output

PHP信息輸出

8. 建議和TAB補全

PHP shell足夠智能,它可以顯示給你建議和進行TAB補全,你可以通過TAB鍵來使用該功能。如果對於你想要用TAB補全的字符串而言有多個選項,那么你需要使用兩次TAB鍵來完成,其它情況則使用一次即可。

如果有超過一個的可能性,請使用兩次TAB鍵。

  1. php > ZIP [TAB][TAB]

如果只有一個可能性,只要使用一次TAB鍵。

  1. php >#cli.pager [TAB]

你可以一直按TAB鍵來獲得建議的補全,直到該值滿足要求。所有的行為都將記錄到~/.php-history文件。

要檢查你的PHP交互shell活動日志,你可以執行:

  1. $ nano ~/.php_history | less

Check PHP Interactive Shell Logs

檢查PHP交互Shell日志

9. 你可以在PHP交互shell中使用顏色,你所需要知道的僅僅是顏色代碼。

使用echo來打印各種顏色的輸出結果,類似這樣:

  1. php > echo "color_code1 TEXT second_color_code";

具體來說是:

  1. php > echo "\033[0;31m Hi Tecmint \x1B[0m";

Enable Colors in PHP Shell

在PHP Shell中啟用彩色

到目前為止,我們已經看到,按回車鍵意味着執行命令,然而PHP Shell中各個命令結尾的分號是必須的。

10. 在PHP shell中用basename()輸出路徑中最后一部分

PHP shell中的basename函數可以從給出的包含有到文件或目錄路徑的最后部分。

basename()樣例#1和#2。

  1. php > echo basename("/var/www/html/wp/wp-content/plugins");
  2. php > echo basename("www.tecmint.com/contact-us.html");

上述兩個樣例將輸出:

  1. plugins
  2. contact-us.html

Print Base Name in PHP

在PHP中打印基本名稱

11. 你可以使用PHP交互shell在你的桌面創建文件(比如說test1.txt),就像下面這么簡單

  1. php> touch("/home/avi/Desktop/test1.txt");

我們已經見識了PHP交互shell在數學運算中有多優秀,這里還有更多一些例子會令你吃驚。

12. 使用PHP交互shell打印比如像tecmint.com這樣的字符串的長度

strlen函數用於獲取指定字符串的長度。

  1. php > echo strlen("tecmint.com");

Print Length String in PHP

在PHP中打印字符串長度

13. PHP交互shell可以對數組排序,是的,你沒聽錯

聲明變量a,並將其值設置為array(7,9,2,5,10)。

  1. php > $a=array(7,9,2,5,10);

對數組中的數字進行排序。

  1. php > sort($a);

以排序后的順序打印數組中的數字,同時打印序號,第一個為[0]。

  1. php > print_r($a);
  2. Array
  3. (
  4. [0]=>2
  5. [1]=>5
  6. [2]=>7
  7. [3]=>9
  8. [4]=>10
  9. )

Sort Arrays in PHP

在PHP中對數組排序

14. 在PHP交互Shell中獲取π的值

  1. php > echo pi();
  2. 3.1415926535898

15. 打印某個數比如32的平方根

  1. php > echo sqrt(150);
  2. 12.247448713916

16. 從0-10的范圍內挑選一個隨機數

  1. php > echo rand(0,10);

Get Random Number in PHP

在PHP中獲取隨機數

17. 獲取某個指定字符串的md5校驗和sha1校驗,例如,讓我們在PHP Shell中檢查某個字符串(比如說avi)的md5校驗和sha1校驗,並交叉校驗bash shell生成的md5校驗和sha1校驗的結果。

  1. php > echo md5(avi);
  2. 3fca379b3f0e322b7b7967bfcfb948ad
  3. php > echo sha1(avi);
  4. 8f920f22884d6fea9df883843c4a8095a2e5ac6f

  1. $ echo -n avi | md5sum
  2. 3fca379b3f0e322b7b7967bfcfb948ad-
  3. $ echo -n avi | sha1sum
  4. 8f920f22884d6fea9df883843c4a8095a2e5ac6f-

Check md5sum and sha1sum in PHP

在PHP中檢查md5校驗和sha1校驗

http://www.tecmint.com/run-php-codes-from-linux-commandline/

http://www.tecmint.com/execute-php-codes-functions-in-linux-commandline/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM