久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

PHP命令行模式用法

2024-01-30 180

PHP是一種廣泛使用的服務器端腳本語言,它可以用于創(chuàng)建動態(tài)的、交互式的網頁應用程序。除了在Web環(huán)境中執(zhí)行PHP代碼外,用戶還可以通過命令行方式來執(zhí)行PHP文件。這種方式非常靈活,適用于各種任務,例如批處理腳本、定時任務、命令行工具等。

一、執(zhí)行PHP文件

CLI SAPI 有三種不同的方法執(zhí)行 PHP 代碼:

1、讓 PHP 運行指定文件

$ php my_script.php
$ php -f my_script.php

以上兩種方法(使用或不使用 -f 參數)都能夠運行給定的 my_script.php 文件。注意,沒有限制可以執(zhí)行哪種文件, 特別是文件名也不必用 .php 作為擴展名。

2、在命令行中直接傳遞 PHP 代碼執(zhí)行

$ php -r 'print_r(get_defined_constants());'

必須特別注意 shell 變量的替代及引號的使用。

注意:請仔細閱讀以上范例,它們沒有開始和結束標識符!加上 -r 參數后不需要這些標記符,并且加上它們還會導致語法錯誤。

3、通過標準輸入(stdin)提供需要運行的 PHP 代碼

這為動態(tài)創(chuàng)建 PHP 代碼并通過二進制文件執(zhí)行提供了強大的能力,就像下面(虛構的)例子展示的一樣:

$ some_application | some_filter | php | sort -u > final_output.txt

以上三種運行代碼的方法不能混合使用。

和所有的 shell 應用程序一樣,PHP 的二進制文件及其 PHP 腳本能夠接受一系列的參數。PHP 沒有限制傳送給腳本的參數的個數( shell 對傳遞的字符數有限制,但通常都不會超過該限制)。傳遞給腳本的參數可在全局數組 $argv 中獲取。第一個索引(零)始終包含從命令行中調用的腳本名稱。

注意在命令行內使用 -r 執(zhí)行 PHP 代碼時, $argv[0] 的值將是 “Standard input code”; 在 PHP 7.2.0 之前是破折號(-)。如果代碼是通過來自 STDIN 的管道執(zhí)行的,同樣如此。另外,第二個全局變量 $argc 包含 $argv 數組中元素的個數(而不是傳遞給腳本的參數個數)。

只要傳送給腳本的參數不是以 – 字符開頭,就無需過多的注意什么。向腳本傳遞以 – 開頭的參數會導致錯誤,因為 PHP 會認為在執(zhí)行腳本之前應該由它自身來處理這些參數。為防止發(fā)生這種情況,可以用列表分隔符 — 參數來解決。在 PHP 解析此分隔符之后, 該符號后的所有參數將會被原樣傳遞給腳本程序。

# 以下命令將不會運行 PHP 代碼,而只顯示 PHP 命令行模式的使用說明
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]
# 將會傳遞 “-h” 參數傳送給腳本,且 PHP 不會顯示命令行模式的使用說明
$ php -r 'var_dump($argv);' -- -h
array(2) {
[0]=>
string(1) "-"
[1]=>
string(2) "-h"
}

二、用于shell腳本

在 Unix 系統(tǒng)中還有一個將 PHP 用于 shell 腳本的方法:寫個腳本,第一行以 #!/usr/bin/php 為開頭 (如果 PHP CLI 二進制文件路徑不一樣,則可以指定為任意實際的路徑)。文件的剩余部分應該包含通用的 PHP 開始標簽、正常的 PHP 代碼、PHP 結束標簽。一旦設置正確的文件執(zhí)行屬性(例如 chmod +x test),腳本就像其他 shell/perl 腳本一樣可以執(zhí)行。

PHP 腳本作為 shell 腳本執(zhí)行:

#!/usr/bin/php
<?php
var_dump($argv);
?>

假設在當前目錄下,該文件名為 test,可以做如下操作:

$ chmod +x test
$ ./test -h -- foo
array(4) {
[0]=>
string(6) "./test"
[1]=>
string(2) "-h"
[2]=>
string(2) "--"
[3]=>
string(3) "foo"
}

正如看到的,在向該腳本傳遞以 – 開頭的參數時,無需關心這種情況。

PHP 可執(zhí)行文件可用于運行完全獨立于 web 服務器的 PHP 腳本。在 Unix 系統(tǒng)上,需要在 PHP 腳本的第一行指定 #!(或者說 “shebang”)以便系統(tǒng)可以自動判斷用哪個程序運行腳本。 在 Windows 平臺上可以使用雙擊擴展名是.php的文件與 php.exe 相關聯(lián),也可以編寫一個批處理文件使用 PHP 運行腳本。為 Unix 系統(tǒng)增加的指定 shebang 的第一行代碼不會影響 Windows (它也是 PHP 注釋的格式),因此也可以用該方法編寫跨平臺的程序。以下是編寫的一個簡單 PHP 命令行程序的示例。

試圖以命令行方式運行的 PHP 腳本(script.php):

#!/usr/bin/php
<?php
if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
This is a command line PHP script with one option.
Usage:
<?php echo $argv[0]; ?> <option>
<option> can be some word you would like
to print out. With the --help, -help, -h,
or -? options, you can get this help.
<?php
} else {
echo $argv[1];
}
?>

在以上腳本中,用包含 Unix shebang 的第一行代碼來指明該文件應該由 PHP 來執(zhí)行。這里使用 CLI 版本運行,因此不會輸出 HTTP 頭。

程序首先檢查是否有需要的參數(除了腳本名,因為它也會被計算進來)。如果沒有參數或者參數是 –help、 -help、 -h、 -?,將會打印出幫助消息, 在命令行上使用 $argv[0] 動態(tài)輸出腳本名稱。否則參數將按照接收的方式進行準確回顯。

如果在 Unix 下運行以上腳本,它必須有可執(zhí)行權限,并簡單的以 script.php echothis 或者 script.php -h 方式調用。在 Windows 下,可以為此類任務編寫與以下內容類似的批處理文件:

運行 PHP 命令行腳本的批處理文件(script.bat):

@echo OFF
"C:\php\php.exe" script.php %*

假設將上述程序名為 script.php,且 CLI 版的 php.exe 位于 C:\php\php.exe, 該批處理文件將會運行并傳遞所有追加選項: script.bat echothis 或者 script.bat -h。

在 Windows 上, PHP 可以配置為無需提供 C:\php\php.exe 或者 擴展名為 .php 的文件運行,如 PHP 在 Microsoft Windows 下的命令行方式中所述。

注意:在 Windows 上,推薦在真實用戶賬戶下運行 PHP,在網絡服務下運行某些操作時將會失敗, 因為“帳戶名與安全標識間無任何映射完成”。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內容未經允許不得轉裁,轉載請注明出處“站長百科”和原文地址。
PHP命令行模式用法
上一篇: PHP命令行模式
PHP命令行模式用法
下一篇: PHP交互式shell