2012-06-15 44 views
0

除了我previous question,另一個問題出現了,我決定做一個新的問題吧:PHP +運行bash腳本來創建文件

我目前正在調用PHP腳本,比運行bash腳本。 PHP腳本的樣子:

chdir('/home/'); 
$output = shell_exec('./do.sh'); 
echo "<pre>$output</pre>"; 

的do.sh包含:

#! /bin/bash 

echo 12; 
dd if=/dev/urandom of=test.test bs=1048576 count=2 

是以下問題:

當我打電話./do.sh從終端一切正常:test.test是創建和輸出是12

但是,當我從我的PHP文件調用它時,輸出爲12,但也是文件正在創建中。由於我對bash腳本幾乎一無所知,我不知道爲什麼會發生這種情況......

+5

這可能是因爲PHP運行的用戶對'/ home /'目錄沒有寫入權限。您必須'chmod nnn/home',其中'nnn'是適當的權限結構 - 請記住儘可能限制它。您可能需要查看所有權和組成員身份以獲得最佳設置。要測試你可以'chmod 777/home',並且如果它有效,那麼你有你的答案。 – DaveRandom

+0

非常感謝!我沒有忘記爲主文件夾設置正確的權限。我只想到實際的php文件,並改變了它的權限,但沒有做同樣的文件夾!我希望你不要在意我標記@ dAm2K的答案,因爲他還建議看看權限! – Andrej

+0

不用擔心... ;-) – DaveRandom

回答

2

檢查是否啓用了PHP safe_mode。你必須在你的/etc/php.ini文件中關閉它,顯然要檢查文件系統的權限。

+0

安全模式關閉,php和.sh文件都有權寫入。但是,我不確定用戶(請參閱@DaveRandom的評論)。 – Andrej

+0

嘗試使用dd:/ bin/dd的絕對路徑if =/dev/urandom of = test.test bs = 1048576 count = 2 – dAm2K

+1

畢竟它是權限!非常感謝!我沒有忘記爲主文件夾設置正確的權限。我只想到實際的php文件,並改變了它的權限,但沒有做同樣的文件夾! – Andrej