php exec()通过cmd行成功运行Rscript,但不能通过浏览器运行

问题描述:

我正在尝试编写一个Web应用程序来运行我的R脚本。 我打算使用php shell_exec()来做到这一点。php exec()通过cmd行成功运行Rscript,但不能通过浏览器运行

我写了一个测试脚本这样 <?php echo shell_exec("Rscript /var/www/html/demo/MyRScript.R"); ?>

我运行它通过命令行。 php test.php,它给出正确的输出,我也通过htop观察,发现过程使用100%cpu几分钟。

但是,当我试图通过浏览器访问它时,通过地址http://myURL/demo/test.php来运行它。它没有正常运行,它只给我的R脚本的前几行onbrief Off On FALSE 405 0 TRUE 0 405 petitioner P R FALSE 0 396 TRUE 414 0并立即停止。我无法通过htop找到该流程。

我尝试了其他简单的命令行,如ls,rm,它们都可以在cmd行和web应用程序上正常工作。

我不知道什么是错的。可以,因为过程需要太多的CPU,所以一些机制会终止它,如果它是通过网络调用?

或者如果有任何调试工具或方法可以用来帮助我找到问题。

这是我对堆栈溢出的第一个问题,我不知道我的信息是否足够。请告诉我是否还有其他需要解决问题的更多信息。

非常感谢。

+0

CMD是Windows的shell。与Linux无关。 – 2016-10-01 23:44:05

+0

opps,我认为是与命令行相同的东西。 –

+0

有一个命令行标记,但它似乎并不有用。 – 2016-10-02 01:08:31

原来是文件权限问题。

在我的R脚本中,有一行尝试访问文件,而Web服务器用户www-data没有读取权限。授予许可后,一切都很顺利。

在我的命令结尾添加2>$1是非常有用的,我能够在我的浏览器中获得错误消息。