2016-10-01 144 views
0

我正在嘗試編寫一個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

回答

0

原來是文件權限問題。

在我的R腳本中,有一行嘗試訪問文件,而Web服務器用戶www-data沒有讀取權限。授予許可後,一切都很順利。

在我的命令結尾添加2>$1是非常有用的,我能夠在我的瀏覽器中獲得錯誤消息。

相關問題