2013-01-24 134 views
5

是否有可能通過不通過web服務器與腳本進行交互的程序執行PHP代碼?最初,我想到了CLI PHP解釋器,但它不包含網站請求常見的任何$ _SERVER或$ _REQUEST變量。在沒有Apache(或其他網絡服務器)的情況下在web服務器「environment」中執行PHP

所以,如果有可能效仿,那麼如何應對呢?我沒有用任何特定的編程語言來思考,因爲我確信Web服務器和PHP之間會有一些共同的接口,它們將獨立於平臺。

這個問題的目的是建立一個Node.JS應用程序,可以作爲一個網絡服務器操作,然後(當需要時)可以執行PHP腳本(具體輸入),獲取響應,然後如果需要一些額外的處理輸出,然後寫入客戶端。

回答

3

除非你想建立一個Node.js的PHP模塊,我認爲CLI是你唯一的選擇 - 你可以通過命令行傳遞所需的變量,我想講什麼對他們重建裏面的腳本:

現在
php -f myscript.php /websites/myscript domain.com 1.2.3.4.5 

,該理想的辦法是把這些參數,並將其寫入到變量,你然後在您的腳本中使用。

如果你有一個現有的腳本,利用$_SERVER,而不想重寫它,這將是一個工作,但不起眼的解決方法。 (不雅,因爲你不正常應該寫入$_SERVER$_GET等。)

$_SERVER["REQUEST_URI"] = $argv[1]; 
$_SERVER["SERVER_NAME"] = $argv[2]; 
$_SERVER["REMOTE_ADDR"] = $argv[3]; 

CLI: Command line usage

(我不是很肯定是否覆蓋服務器的變量,比如這是猶太,但它肯定是在一個標準的設置中工作,我會問在PHP聊天的人他們認爲...編輯:沒有人真的喜歡它,但似乎沒有任何主要的缺點)

+0

我在想如果我用過CLI方法,我將不得不序列化數據並通過參數進行解析,或者使用類似於memcache的東西。但是我確實認爲我必須構建一個模塊,但是如果有一個好的CGI節點模塊可用,我會使用它(或者如果看起來更容易,我自己編碼) – topherg

+0

@cgoddard是的。也許有人想出了一個基於模塊的解決方案,*會*是最好的方式..雖然我猜這裏沒有任何對話memcache –

+0

那麼你不需要整個數據列表,只是你想要的。 CGI是如何web服務器(如Apache)與PHP接口? – topherg

相關問題