2017-09-07 144 views
0

我成功地在Heroku平臺中部署了我的php應用程序。在我的PHP代碼,我調用Python文件通過了shell_exec()如下:未能在Heroku平臺上從PHP調用Python腳本(託管)

$result = shell_exec('python test.py ' . escapeshellarg($content)); 

我的PHP應用程序的工作在本地主機上並沒有什麼問題,我的PHP應用程序的其他功能工作在Heroku。但是當我請求這個聲明的文件時:

$result = shell_exec('python test.py ' . escapeshellarg($content)); 

python腳本的輸出是空的,即echo $ result;是空的。 更清楚,如果我運行testpython.php我的本地主機上的輸出在瀏覽器後運行$ result = shell_exec('python test.py'。escapeshellarg($ content));將會是:results:「python腳本中的輸出」。但是當我從Heroku的託管結果運行testpython.php是空 我檢查,如果通過主辦支持了shell_exec功能:

is_callable('shell_exec') && false === stripos(ini_get('disable_functions'), 
'shell_exec'); 

,結果是真實的。 testpython.php僅在shell上運行python腳本並在瀏覽器中顯示結果。

如果任何人可能知道原因或對此有任何評論/解決方案,那麼聽到他/她的意見會很高興。

提示:我認爲問題是我在Heroku服務器上沒有的python腳本中使用了一些庫。有沒有辦法在heroku服務器上安裝python庫(例如nltk)?

+0

是你的test.py文件在與php文件相同的文件夾? – reevkandari

+1

你的PHP錯誤日誌將有更多的信息 – iainn

+0

@reevkandari是test.py文件與php文件在同一文件夾中 –

回答

0

因爲我猜測問題是我在Heroku服務器上不可用的python腳本中使用了一些庫。因爲我的應用程序是PHP,所以默認的buildpack是PHP。最後,我使用了Multiple Buildpacks(一個用於PHP,另一個用於python)解決了heroku服務器上所有不可用的庫。現在我的應用程序完美的工作和PHP腳本調用遠程python腳本