PHP的命令行调用未执行

时间:2014-09-02 17:32:58

标签: php command-line-interface

我想从运行在网络服务器上的php脚本启动python应用程序。 到现在为止还挺好。我试过了

passthru("python track.py"); 

但它没有用。什么都没发生。我尝试了exec()和system()以确保。 然后我试着运行一个PHP脚本:

passthru("php test.php");
passthru("/usr/bin/php test.php")

仍然没有发生任何事情。但是一个

passthru("ls")

按预期正常工作。

我设置了每个用户都可以编辑和运行文件的权限。

1 个答案:

答案 0 :(得分:0)

这听起来像是网络服务器用户无法读取相关文件的情况。

不幸的是,如果命令失败,passthru()只返回NULL,而不是抛出异常。例如,即使是var_dump(passthru('foobar'));这样的废话也会返回NULL

你怎么解决这个问题?您可以从命令行测试Web服务器是否能够执行命令(假设www-data是您的Web服务器用户,并且您具有sudo权限):

sudo su - www-data -c 'python track.py'

通过这种方式,您可以获得有意义的错误消息并解决问题。