2016-12-22 121 views
0

我想運行這個命令來創建一個文件夾在我的樹莓派,但它不工作。 我對PHP或HTML不太好。我GOOGLE了,我無法解決,所以張貼在這裏。 如果重複並且存在解決方案。請給我提供鏈接。 TIA 代碼:Html來運行系統命令

<html> 
<head> 
<?php 
if (isset($_POST['TestA'])) 
{ 
exec('sudo mkdir /www/test'); 
} 
if (isset($_POST['TestB'])) 
{ 
shell_exec('sudo mkdir /www/test1'); 
} 

?> 

    <title></title> 
</head> 
<body> 
<form method="post"> 
    <table 
style="width: 75%; text-align: left; margin-left: auto; margin-right: auto;" 
border="0" cellpadding="2" cellspacing="2"> 
    <tbody> 
     <tr> 
     <td style="text-align: center;">Test case 1</td> 
     <td style="text-align: center;">Test case 2</td> 
    </tr> 
    <tr> 
    <td style="text-align: center;"><button name="TestA">test 2</button></td> 
    <td style="text-align: center;"><button name="TestB">test 2</button></td> 
    </tr> 

</tbody> 
    </table> 
</form> 
</body> 
</html> 
+0

歡迎光臨。這是一個普遍的編程問題,沒有關於Raspberry Pi的具體內容。我建議你通過Stackoverflow.com問這個問題。 –

+2

在這裏閱讀http://php.net/mkdir –

+2

我真誠希望用戶您的網絡服務器正在運行,因爲沒有權限使用'sudo'。 – Siguza

回答

3

你是否注意到你嘗試與sudo運行命令,這意味着用戶www數據必須要包含在/ etc/sudoers文件。

我試過你的代碼,它工作,如果我刪除'sudo',如果我給/ www目錄中的權限。

我認爲你需要在sudoers文件中配置用戶。

我sudoers文件的一個例子:

#WWW-DATA 
User_Alias WEBUSER = www-data 
Cmnd_Alias CMDCOMMAND = /usr/sbin/asterisk, /sbin/iptables 
WEBUSER ALL = NOPASSWD:CMDCOMMAND 

#Allow members of group sudo to execute any command 
%sudo ALL=(ALL:ALL) ALL 

您需要更換CMDCOMMAND,與你的網絡服務器會以root身份運行命令。在這種情況下,mkdir

請記住,您需要前往/etc/目錄並使用visudo -f sudoers正確編輯sudoers文件。

sudoersHere

P.S:如果你想測試,如果你的Web服務器可以運行一個命令,您可以:

su - www-data 

後,這將是一個sh控制檯。

在添加代碼之前,您可以運行您的命令。

0

你可以用PHP創建一個目錄而不用調用shell。 PHP有自己的mkdir函數。

替換此行:

exec('sudo mkdir /www/test'); 

與此:

mkdir("/www/test1", 0700); 

和用於第二mkdir命令這樣做。

第一個參數是創建第二個目錄的模式(權限)。

如果你真的想在/WWW創建這個目錄(見注下面關於安全性),您將需要編輯的WWW的數據用戶的sudoers文件在伊萬的答案描述或建立目錄和更改所有者。你可以用下面的創建/WWW目錄:

sudo mkdir /www 

,改變所有權與以下:

chown www-data:www-data /www 

注:給予www數據sudo的權限創建一個安全漏洞。您應該在/ var/www/html /目錄中創建需要的目錄,其中權限不是問題,並且不需要sudo。如果你不想從網上訪問這些目錄,我會建議在/ var/www中創建它們並更改所有者。