導航:首頁 > 程序命令 > php命令

php命令

發布時間:2022-02-15 04:59:35

『壹』 如何獲取php命令行參數

如何獲取PHP命令行參數

使用 PHP 開發的同學多少都會接觸過 CLI 命令行。經常會有一些定時任務或者一些腳本直接使用命令行處理會更加的方便,有些時候我們會需要像網頁的 GET 、 POST 一樣為這些命令行腳本提供參數。比如在針對某些日期做統計的腳本,就需要傳遞一個日期給它,這樣我們就統計指定日期的一些數據。這類需求應該非常常見,那麼,我們都是如何來接收這些命令行的參數的呢?今天,就來介紹一下這方面的內容。

$argv 獲得所有空格分隔的參數列表

這個變數估計是大家用得比較多的一個接參變數了。它是 PHP 為我們准備好的一個固定變數,目的就是獲取傳遞給腳本的參數數組。

print_r($argv); // php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd // Array // ( // [0] => 如何獲取PHP命令行參數.php // [1] => --a=1 // [2] => -b=2 // [3] => -c=3 // [4] => -d=4 // [5] => --e=5 // [6] => ccc // [7] => ddd // )

這個數組是以參數間隔的空格進行分隔的。第1個元素是當前運行的腳本文件名,也就是說,不管有沒有參數,這個變數一定會有一個 $argv[0] 表示的是當前的腳本文件名。

在日常的開發需求中,其實使用這個變數就已經夠用了。但是這明顯不會是我們今天的主題,大家注意到上面的代碼中我們有很多參數是 -x=xxx 的形式,這種形式的參數是不是和 linux 的命令選項非常像,沒錯,這就是我們今天要重點介紹的:從命令行參數列表中獲取選項。

getopt() 從命令行參數列表中獲取選項

其實就是這樣一個簡單的函數,我們就可以像 Linux 的命令選項一樣獲取指定的命令值。而且不是像 $argv 按空格進行分隔,命令選項函數會將這些命令選項封裝成數組,組成以選項名為鍵,以等號後面的內容為值的數組,更加方便我們的使用。

// php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('a:b:c:d:e:f:')); // Array // ( // [b] => 2 // [c] => 3 // [d] => 4 // )

是不是很神奇,而且非常直觀吧,我們直接就拿到了 b 、 c 、d 的內容並且是格式非常清晰的鍵值數組形式。有同學要問了,a 和 e 呢?還有後面的 ccc 、 ddd 呢?

首先要說明的是,ccc 和 ddd 不是標準的選項參數,也就是說,這個函數接收的內容是以 - 開頭的選項,所以 ccc 和 ddd 不會在這里輸出,並且需要注意的是,非選項參數會中斷選項參數的獲取,在 ccc 之後如果繼續添加 - 開頭的選項也是無法獲取到的,這個我們後面還會看到。而 -- 開頭的選項參數呢?我們直接看下面的長選項功能。

長選項 // php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('', ['a:','b:','c:','d:','e:','f:'])); // Array // ( // [a] => 1 // [e] => 5 // )

沒錯,getopt() 函數的第二個參數就是定義這種 -- 開頭的長選項的,而且需要注意的是,第一個參數是字元串類型,第二個長選項參數是數組類型的。那麼我們把它們結合起來,就當然可以獲取到全部的參數信息啦!

// php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('a:b:c:d:e:f:', ['a:','b:','c:','d:','e:','f:'])); // Array // ( // [a] => 1 // [b] => 2 // [c] => 3 // [d] => 4 // [e] => 5 // )

OK,參數選項獲取沒問題了吧,細心的同學肯定又發現了一個問題,這個 getopt() 函數的參數中定義的選項名稱後面為啥都要加個冒號?這就涉及到我們的冒號規則了,請直接往下看。

冒號規則

getopt() 的前兩個參數都支持一套關於選項獲取的規則:

單獨的字元(不接受值) 後面跟隨冒號的字元(此選項需要值) 後面跟隨兩個冒號的字元(此選項的值可選)

我們還是直接通過代碼來看一下。

// 一 // php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('abcdef')); // Array // ( // [b] => // [c] => // [d] => // ) // 二 // php 如何獲取PHP命令行參數.php -f print_r(getopt('f::')); // Array // ( // [f] => // ) print_r(getopt('f:')); // Array // ( // ) // 三 // php 如何獲取PHP命令行參數.php -f 22 print_r(getopt('f::')); // Array // ( // [f] => // ) print_r(getopt('f:')); // Array // ( // [f] => 22 // ) // 四 // php 如何獲取PHP命令行參數.php -f=22 print_r(getopt('f::')); // Array // ( // [f] => 22 // ) print_r(getopt('f:')); // Array // ( // [f] => 22 // )

這一段比較長,我們一塊一塊來看。首先是不帶冒號的 abcdef 寫法,返回的數組中都包含鍵,但沒有值,對應上面的規則就是不接受這些參數選項的值,你傳了這些參數選項也是只有鍵名而內容是空的。

第二段是定義了一個參數,但是不給值,這時,雙冒號 :: 會有鍵名,而單冒號 : 則什麼都沒有。

第三段是空格形式的選項值,雙冒號 :: 有鍵名但沒有值,單冒號 : 鍵值正常。

第四段是等號 = 形式的選項值,單雙冒號都正常接收到鍵值。

選項參數中斷

上文中我們提到過參數中斷的問題,就是在選項參數之後如果有一個非選項參數的參數出現,getopt() 就無法再獲取到這個非選項參數後面的所有內容了。

// php 如何獲取PHP命令行參數.php -f=22 aa -b=33 // 選項的解析會終止於找到的第一個非選項,之後的任何東西都會被丟棄。 // Array // ( // [f] => 22 // )

通過這個測試可以清晰的看出後面的 b 選項無法獲取。這時,如果我們想知道選項參數在什麼地方或者因為哪個參數而中斷的話,就可以使用 getopt() 函數的第三個參數了。

// php 如何獲取PHP命令行參數.php -f=22 aa -b=33 $optind = null; getopt('f:b:', [], $optind); echo $optind, PHP_EOL; // 返回中斷位置的索引值,2 echo $argv[$optind], PHP_EOL; // 等同於 $argv 的索引順序,aa

注釋已經寫得很清晰了,第三個參數會回調一個參數選項中斷位置的索引,並且這個索引是和 $argv 的索引順序位置一致的。

總結

說實話,在沒看文檔前真的只知道有一個 $argv 變數可以用來獲取命令行腳本的參數,通過這次學習才發現原來還有一個這么強大的選項參數函數。學習的過程非常簡單,如何運用到真實的項目中才是關鍵所在,加油學習,努力實踐吧!

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96PHP%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.php

『貳』 怎麼在cmd裡面運行php命令

命令行直接執行語句 C:\Php>php -r "echo \"hello world!\""; 或者 命令執行文件 C:\Php>php -f C:/apache/apache2/www/demo/test/index.php。其實你自己在後盾人看看教學視頻,加上自己的理解,多想想就明白了,很簡單的

『叄』 如何在cmd命令行下運行php

把你安裝後的php.exe文件路徑添加到系統PATH下,就行了

『肆』 用什麼命令查看PHP版本

方法一:命令行查詢
如果已經配置好環境變數,直接在命令行中輸入php -v,將會顯示php的版本信息。如果沒有配置環境變數,直接在命令行中進入到php的安裝目錄後,再輸入命令php -v
方法二:使用預定義常量PHP_VERSION查詢
新建一個php文件,在裡面輸入
<?php echo PHP_VERSION;?>
在瀏覽器中輸出對應的網址,就可以查看到php的版本信息
方法三:使用phpversion()函數查詢
新建一個php文件,在文件中輸入
<?php echo phpversion();?>
在瀏覽器中訪問,可以看到瀏覽器頁面上返回的php版本信息,跟預定義常量PHP_VERSION顯示效果一樣
方法四:使用phpinfo()函數查詢
新建一個php文件,在文件中輸入
<?php echo phpinfo();?>
在瀏覽器中訪問,可以看到不僅可以看到PHP的版本信息,還能看到其它很多關於PHP的信息

『伍』 PHP怎麼運行DOS命令

你的意思應該是在DOS環境下運行php命令。
首先,將php加入到環境變數path中。
然後,執行:php 你要執行的命令。

『陸』 linux怎麼查看php啟動命令

啟動php-fpm。

/usr/local/php5/sbin/php-fpm /usr/local/php5/為php-fpm的安裝地址。

/usr/local/php-5.6.3/sbin/php-fpm -R # 如果報錯顯示不能用root用戶啟動,則可以考慮使用 -R命令。

查看是否啟動成功:

netstat -lnt | grep 9000

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN

或者使用如下命令,查看是否9000埠被php-fpm佔用:

netstat -tunpl | grep 9000

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2124/php-fpm。

『柒』 如何在linux上直接執行php命令

在 Linux 下執行 php 腳本時通常是可以使用以下命令:

1

#/usr/local/php/bin/php test.php

為簡化輸入可把此php執行程序 到系統命令目錄下:

1

#cp /usr/local/php/bin/php /usr/sbin/

驗證:輸入以下命令,如正確獲取 php 版本,說明操作成功。

1

#php -v

這樣,以後再執行PHP腳本時可直接採用以下輸入方式即可。

1

#php a.php

『捌』 如何通過PHP執行linux命令

首先先要給大家介紹PHP執行linux系統命令的幾個基本函數。
system函數
說明:執行外部程序並顯示輸出資料。
語法:string system(string command, int [return_var]);
返回值: 字元串
詳細介紹:
本函數就像是 C 語中的函數 system(),用來執行指令,並輸出結果。若是 return_var 參數存在,則執行 command 之後的狀態會填入 return_var 中。同樣值得注意的是若需要處理用戶輸入的資料,而又要防止用戶耍花招破解系統,則可以使用 EscapeShellCmd()。若 PHP 以模塊式的執行,本函數會在每一行輸出後自動更新 Web 伺服器的輸出緩沖暫存區。若需要完整的返回字元串,且不想經過不必要的其它中間的輸出界面,可以使用 PassThru()。
實例代碼:
< ?php

$last_line = system('ls', $retval);
echo 'Last line of the output: ' . $last_line;
echo '<hr/>Return value: ' . $retval;
?>
exec函數
說明:執行外部程序。
語法:string exec(string command, string [array], int [return_var]);
返回值: 字元串
詳細介紹:
本函數執行輸入 command 的外部程序或外部指令。它的返回字元串只是外部程序執行後返回的最後一行;若需要完整的返回字元串,可以使用 PassThru() 這個函數。
要是參數 array 存在,command 會將 array 加到參數中執行,若不欲 array 被處理,可以在執行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二個參數都存在,則執行 command 之後的狀態會填入 return_var 中。
值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用 EscapeShellCmd()。
實例代碼:
< ?php
echo exec('whoami');
?>
popen函數
說明:打開文件。
語法:int popen(string command, string mode);
返回值: 整數
詳細介紹:
本函數執行指令開檔,而該文件是用管道方式處理的文件。用本函數打開的文件只能是單向的 (只能讀或只能寫),而且一定要用 pclose() 關閉。在文件操作上可使用 fgets()、fgetss() 與 fputs()。若是開檔發生錯誤,返回 false 值。
實例代碼:
< ?
$fp = popen( "/bin/ls", "r" );
?>
通過上述函數,PHP可以執行linux系統的shell命令。

『玖』 怎麼用php命令執行php代碼

PHP執行命令的四種方法

方法一:使用exec函數執行系統外部命令

原型:function exec(string $command,array[optional] $output,int[optional]
$return_value)

<?
exec("dir",$outPut);

print_r($outPut);
?>


說明:列出和PHP執行文件同級目錄下的所有目錄及文件信息。


知識點:exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行,如果你想得到結果你可以使用第二個參數,讓其輸出到指定的數組,此數組一個記錄代表輸出的一行,即如果輸出結果有20行,則這個數組就有20條記錄,所以如果你需要反復輸出調用不同系統外部命令的結果,你最好在輸出每一條系統外部命令結果時清空這個數組,以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。


方法二:使用system函數執行系統外部命令


原型:function system(string $command,int[optional] $return_value)


1
2
3

<?
system("dir");
?>


知識點:system和exec的區別在於system在執行系統外部命令時,直接將結果輸出到游覽器,如果執行命令成功則返回true,否則返回false。第二個參數與exec第三個參數含義一樣。


方法三:使用函數passthru執行系統外部命令


原型:function passthru(string $command,int[optional] $return_value)


知識點:passthru與system的區別,passthru直接將結果輸出到游覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。


方法四:反撇號`(和~在同一個鍵)執行系統外部命令


1
2
3

<?
echo `dir`;
?>


知識點:在使用這種方法執行系統外部命令時,你要確保shell_exec函數可用,否則是無法使用這種反撇號執行系統外部命令的。

『拾』 linux命令怎麼運行php文件

在安裝完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 ,這將會在網路瀏覽器中打開該文件。

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

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

檢查所有PHP信息
這里,『-f『選項解析並執行命令後跟隨的文件。

閱讀全文

與php命令相關的資料

熱點內容
命令方塊指令冰封劍 瀏覽:784
android中so文件 瀏覽:276
手工用氣球做的捏捏樂解壓神器 瀏覽:196
app升級後就閃退怎麼辦 瀏覽:35
手錶上的樂塗app怎麼下載 瀏覽:721
程序員身上的六宗罪是什麼 瀏覽:145
游戲編程精粹6 瀏覽:69
修復ie的命令 瀏覽:602
linux伺服器怎麼查看地址 瀏覽:65
底部異地持倉源碼 瀏覽:105
加密應用手機 瀏覽:798
程序員考試考什麼科目 瀏覽:485
程序員必備文檔編輯 瀏覽:960
踩水果解壓大全 瀏覽:634
什麼是dk伺服器在 瀏覽:461
nusoapphp下載 瀏覽:929
黑莓原生解壓rar 瀏覽:956
百度解壓縮在哪 瀏覽:788
硬解壓卡怎麼用 瀏覽:183
新買的聯想伺服器怎麼配置 瀏覽:757