我有一個Web服務端點需要調用另一個開發人員的CLI PHP腳本作爲其運行的一部分。僞像這樣:
function startCLI($input, $output){
$cmd = escapeshellarg('php bin/startcli.php $input $output');
exec($cmd, $output, $ret);
if ($output){
print_r($output[0]);
}
}
現在,你可能會問:爲什麼不通過$_POST['var']
到clistart.php
腳本?
那麼,當你從海外獲得你的遺留代碼時,你會得到你付出的代價,有時候,我需要拆分他們的系統並重新組合起來的時間比我必須實現整個方案。
因此,我們只是規定我不能將新變量添加到clistart.php
腳本中,然後從中取出它。地獄,把它當作學術練習吧。從Web請求的PHP腳本執行的CLI腳本是否可以訪問$ _GET或$ _POST來運行?
更新:我已經嘗試將鍵添加到$ _ENV和getenv()
和putenv()
,但結果是相同的 - 我可以更新當前腳本的環境以及它正在執行的作業的子腳本,但因爲這些作業是由一個擁有自己的$ _ENV上下文的持久進程運行的,似乎沒有辦法將該變量傳遞給持久化進程的上下文。
我不得不求助於數據庫或文件觸摸,除非有人有另一個想法。
測試這個('print_r($ GLOBALS)')將會是微不足道的,並且肯定會比您寫出問題並等待答案消耗更少的時間。 – 2011-04-29 01:18:12
我仍然缺少一些東西;你能舉出你從命令行中使用'clistart.php'的不同方式的例子嗎? – 2011-05-06 21:44:29