2017-09-07 141 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脚本