我正在開發一個調用PHP二進制文件(通過CGI)來處理腳本的網絡服務器。如何將查詢字符串參數傳遞給PHP二進制文件?
這裏的問題:
的PHP腳本不撿的命令行參數。例如,如果客戶端請求path/to/file.php?test=value
,則$_GET
數組爲空。
我曾嘗試在環境變量(QUERY_STRING
)中傳遞參數,但它們仍然不顯示。
如何將查詢字符串參數傳遞給PHP應用程序?
我正在開發一個調用PHP二進制文件(通過CGI)來處理腳本的網絡服務器。如何將查詢字符串參數傳遞給PHP二進制文件?
這裏的問題:
的PHP腳本不撿的命令行參數。例如,如果客戶端請求path/to/file.php?test=value
,則$_GET
數組爲空。
我曾嘗試在環境變量(QUERY_STRING
)中傳遞參數,但它們仍然不顯示。
如何將查詢字符串參數傳遞給PHP應用程序?
有PHP的各種SAPIs。其中之一是cli SAPI,顯然是你正在使用的,cli SAPI不會填充$ _GET,$ _POST ...因爲它是用於命令行腳本的。
你的情況你需要PHP cgi SAPI。 (例如,你需要更換php
php-cgi
[1]在您的家當)
[1]在大多數distribuitons它被稱爲php-cgi
,如果你自己,你需要啓用CGI編譯PHP。
你說的是命令行參數或$ _GET參數?那些不一樣。
使用網頁瀏覽器時,使用$_GET
。但是,如果您傳遞的命令行參數爲/path/to/file.php arg1 arg2
,那麼您必須使用(並且$argc
包含元素的長度)。
$argv[0]
總是包含正在運行的文件,在本例中爲/path/to/file.php
。
$argv[1]
是arg1
在這種情況下和$argv[2]
是arg2
。所以$argc
包含3
有用的資源:
如Don’t call me DOM » Testing CGI scripts with QUERY_STRING, in PHP提到的,可能必須使用parse_str
解析經由CLI模式傳遞環境變量 - 例如在Linux終端:
$ QUERY_STRING="aa=bb&cc=dd" php -r 'parse_str(getenv("QUERY_STRING"),$_GET); print_r($_GET);'
Array
(
[aa] => bb
[cc] => dd
)
- 選項1:PHP-CGI -
使用'php-cgi'來代替'php'來運行你的腳本。這是因爲你不需要特意修改你的PHP代碼與它合作的最簡單的方法:
php-cgi -f /my/script/file.php a=1 b=2 c=3
- 選項2:如果你有一個Web服務器 -
如果PHP文件是在命令行中,你可以使用 'wget的' web服務器上:
wget 'http://localhost/my/script/file.php?a=1&b=2&c=3'
OR:
wget -q -O - "http://localhost/my/script/file.php?a=1&b=2&c=3"
- 在PHP訪問變量 -
在這兩種選項1 & 2你訪問這些參數是這樣的:
$a = $_GET["a"];
$b = $_GET["b"];
$c = $_GET["c"];
啊,這就是了。謝謝! – 2010-10-03 07:25:17
當你沒有php-cgi但想模擬在cgi環境下調用php時,你會做什麼? – ericslaw 2011-06-23 19:11:26
要拼出來,你可以運行'php-cgi file.php a = 1 b = 2'。 – ijt 2017-03-21 01:12:38