2015-02-11 72 views
0

好的,我具有權限的噩夢..運行php shell_exec沒有返回結果給瀏覽器?

我有/var/www/src/myshell.sh這是可執行

#!/bin/bash 
echo "It's working" > /var/www/html/myshell.txt 

也能正常工作從CLI, txt文件被創建爲包含「It's working」文本。

但是,當我嘗試從運行/var/www/html/test.php

<?php 
$message=shell_exec("/var/www/src/myshell.sh 2>&1"); 
print_r($message); 
?> 

它返回在瀏覽器中執行以下操作:

/var/www/src/myshell.sh: line 3: /var/www/html/myshell.txt: Permission denied 

而且myshell.txt是不是在/ var/www/html中創建的

我花了整個昨晚嘗試一切可能的方式,我可以找到這裏SO和其他地方設置正確的權限沒有一個所以我放棄了試圖找出它,並想知道是否有可能運行這個shell腳本,而不是它試圖返回任何東西到瀏覽器,因爲這似乎是導致權限錯誤。

所以基本上test.php啓動.sh腳本,然後忘記它。無論如何,我打算在這裏使用的流程不需要被髮送回瀏覽器。

難道這可以通過不使用shell_exec並通過使用另一個PHP命令,而不是?

非常感謝

回答

1

apache用戶沒有權限對 「在/ var/www/html等/」 寫。

而不是寫在那裏,創建另一個文件夾並設置寫入權限,如「/ var/www/html/var /」,設置爲該文件夾寫入權限並將其用於任何動態內容。

+0

你的先生是一個絕對的傳奇人物。如果我昨晚知道這個簡單的事實,它會救了我4小時拉我的頭髮!非常感謝! – Grant 2015-02-11 15:41:06

+0

好吧,現在正在工作,但它仍然顯示在Web瀏覽器中sh輸出的結果。我能壓制結果嗎?我根本不需要看到他們。 – Grant 2015-02-11 15:47:18

+0

請刪除print_r($ message); print_r是一個「輸出」函數,它在內部做類似echo $ var; – 2015-02-11 15:50:08