2017-01-02 53 views
0

執行我在PHP中有這樣的代碼:寫在bash文件,通過PHP

<?php 

echo "<pre>doing..\n</pre>"; 

$output = shell_exec('./new.sh arg1 arg2'); 
echo "<pre>$output</pre>"; 

echo "<pre>done</pre>"; 

?> 

即執行接收一些參數一個bash文件。 bash的文件是這樣的:

#!/bin/sh 

echo "Hello World!" >> $1.txt 
echo "File created!" 

它不應該附加上稱爲「arg1.txt」的文件,因爲$1argument_1新線。

當我執行shell通常它完美的作品,但是當我嘗試用PHP執行我得到這個HTML輸出:

doing.. 

File created! 

done 

這應該是正確的,但沒有文件已創建......爲什麼?

UPDATE_1

如果我在命令行中執行index.php文件,它完美的作品,因此PHP沒有權限問題。可能它是Apache2的一個問題。但我不知道如何解決。

+1

你在正確的地方看? ''output = shell_exec('pwd; ./new.sh arg1 arg2');'還應該顯示你創建的_where_。否則,它可能是一個權限問題。很難用這麼少的信息來分辨。 –

+0

@gniourf_gniourf如預期的那樣說/ var/www/html,但沒有創建文件。 – Northumber

+0

運行'php'的進程是否有權在其中寫入文件? –

回答

0

解決

通過賦予權限的Apache2對www文件夾的寫:

chown -R www-data:www-data /var/www/html