2014-07-26 42 views
0

我遇到了從命令行運行我的PHP應用程序的問題。 我最近創建了一個新的Google Cloud Engine CentOS實例來託管我的PHP應用程序。 此應用程序在其他RHEL盒子上運行良好。PHP CLI連接到WebSerbvice

的應用程序從一個PHP腳本使用了一種類似於命令拉開序幕......

$command = 'bash -c "exec nohup setsid runPHPScript > /dev/null 2>&1 &"'; 
exec($command, $output, $returnVar); 

runPHPSCript是基本運行實際PHP命令在Linux腳本...

php myScript.php 

myScript.php然後熄滅,並連接到各種網絡服務等...

當我試圖在我的新實例上運行此(銘記第是所有工作的罰款在我的RHEL盒)我得到以下SOAP錯誤...

(faultcode: HTTP, faultstring: Could not connect to host) 

的SOAP安裝/連接到端點WSDL實際上是成功的,但只要我嘗試發送我得到的請求上面的錯誤。

我已經調試這和閱讀了一下,可以確認以下...

  • HTTP & HTTPS是在GCE實例同時啓用。
  • 我已經驗證這兩個PHP &的Apache使用相同的php.ini文件(詳見下文)
  • 我檢查的phpinfo使用兩種配置()和PHP -i,可以看到數據的各種SSL條目

奇怪的是,如果我在瀏覽器中打開myScript.php(它是一個LAMP堆棧),它連接細到web服務,我可以看到有效的響應。這導致我認爲問題是不同的php.ini被使用。 此外,在命令提示符下,如果我只是運行myScript.php直接也能正常工作......

php 'myScript.php' 

返回有效響過。

所以這個問題似乎只在我嘗試使用BASH啓動應用程序時發生。 任何人有任何想法?

羅伯特

+0

只是好奇......爲什麼你不能直接執行'exec(「php myScript.php」);'直接在你的代碼中? – raidenace

+0

或只包括('myScript.php') – denisvm

+0

@raidenance,老實說我不記得爲什麼。這段代碼是在大約6或7年前編寫的。當時我需要能夠啓動一個可以在後臺運行的進程,並且不會綁定到Apache或在腳本運行時導致父腳本掛起。我認爲當時我在網站上選擇了這種方法。不知道當時是否是PHP的限制,但現在我看到您可以使用exec在後臺運行進程。可能試試。 – fatlog

回答

0

清理。 根據Raidenace的建議,只是運行exec直接工作也很好...

「只是好奇...爲什麼你不能只執行exec(」php myScript.php「);在你的代碼direcctly?