2017-06-04 42 views
-1

所以我有一個bash腳本我想運行在php中有參數,但目前我甚至不能讓PHP寫入機器。作爲基本測試,我嘗試了觸摸命令,但沒有成功。我是PHP新手,所以任何幫助都會很棒。我不明白這裏有什麼問題。 我試過了:PHP exec命令寫入服務器

<?php 
shell_exec('touch /var/www/html/test.txt'); 
?> 

<?php 
exec('touch /var/www/html/test.txt'); 
?> 

<?php 
system('touch /var/www/html/test.txt'); 
?> 

<?php 
passthru('touch /var/www/html/test.txt'); 
?> 
+0

你得到了什麼錯誤? – Jared

+0

無,只是不生成文件。 – Zahkc

+0

確保您顯示所有錯誤。 在您打開PHP標記後加入: 'error_reporting(E_ALL); ini_set('display_errors',1); ' – Jared

回答

1

如果沒有更多的信息很難回答。但是,通常touch應該創建一個新文件。最常見的原因是缺乏權限。

通常,網絡服務器以用戶www-data運行。檢查並查看是否未爲該用戶設置權限。

你可以簡單的運行命令

addgroup www-data 

這將報錯了,如果www數據具有正確的權限。否則,事情可能剛剛開始工作。出於安全目的,也要在此之後重新啓動Apache。

/etc/init.d/apache2 restart 

或者,在系統命令中添加一個像這樣的第二個變量。

system('touch /var/www/html/test.txt', $retval); 

$ retval將包含錯誤的狀態。將幫助您調試。

您也可以像這樣在apache錯誤日誌上運行尾部。

tail -f /var/log/apache2/error.log 

它應該拋出錯誤,如果有問題。

+0

乾杯隊友,沒有意識到它有自己的組。 – Zahkc

+0

快樂的人。最近才知道這一點。 –