r - php exec()通过命令行运行Rscript成功,但不能通过浏览器运行


r - php exec() run Rscript successfully by cmd line but not working by browser

我正试图编写一个web应用程序来运行我的R脚本。我计划使用php shell_exec()来实现这一点。

我写了一个像这样的测试脚本<?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,所以在web调用的时候会有某种机制终止它?

或者是否有任何调试工具或方法可以帮助我找到问题。

这是我关于Stack overflow的第一个问题,我不知道我的信息是否足够。请告诉我是否还需要其他更多的信息来解决这个问题。

原来是文件权限问题。

在我的R脚本中,有一行试图访问文件,而web服务器用户www-data没有读取权限。给它权限后,一切都很顺利。

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