我試圖訪問我的PHP腳本中的一些遠程網站,但腳本保持超時。wget適用於命令行,但不適用於PHP
它只在測試Web服務器上運行時失敗,但不在生產Web服務器上運行。
該腳本在訪問大多數其他URL時工作得很好,例如, stackoverflow.com或www.google.com。
我試過用PHP命令file_get_contents($url)
以及exec("wget $url"
)和exec("curl $url")
,所有這些都失敗了。再說一次,大多數網站運行良好,而不是我真正想要的。
我可以通過wget和curl訪問命令行上的遠程站點。即使是PHP腳本也可以在命令行中運行!所以我知道這個劇本有效。
該腳本在我們的生產Web服務器上運行時工作。但它在測試Web服務器上運行時不起作用。
似乎只有來自Apache的GET請求從測試服務器到遠程站點有一些特殊之處,而不是命令行。
如何診斷此問題?
測試Web服務器是否產生任何錯誤?你有PHP錯誤顯示啓用?你有權訪問Apache/IIS或PHP日誌嗎?如果它已經不是,你能打開日誌嗎? – MonkeyZeus
你可以用'sudo su'(其中可能是'apache'或'www-data')切換用戶來測試是否是因爲apache-user的權限。你也可以嘗試使用PHP的curl函數,而不是去通過'exec'。 –
towr
Apache用戶在SUSE Linux機器上是wwwrun。我可以成功地從命令行爲此用戶運行wget和curl。但是PHP腳本失敗,出現「連接超時錯誤」。 – berbo