2016-12-22 3 views
0

Я пытаюсь запустить эту команду, чтобы создать папку внутри моей малины pi, но она не работает. Я плохо разбираюсь в PHP или HTML. Я googled, и я не могу решить, поэтому отправляю его здесь. Если оно повторяется и решение существует. пожалуйста, предоставьте мне ссылку. ТИА Код: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

Добро пожаловать. Это общий вопрос программирования, ничего конкретного о малине Пи. Я предлагаю вам задать этот вопрос на Stackoverflow.com. –

+2

Читайте здесь http://php.net/mkdir –

+2

Я искренне надеюсь, что ваш веб-сервер работает, так как не имеет разрешения на использование 'sudo'. – Siguza

ответ

3

Вы заметили, вы пытаетесь выполнить команду с sudo, это означает, что пользователю WWW-данные должны быть включены в/и т.д./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 с командами ваш веб-сервер будет работать в качестве корня. В этом случае mkdir.

Помните, что вам нужно перейти в /etc/ и использовать visudo -f sudoers, чтобы правильно отредактировать файл sudoers.

sudoersHere

P.S: Если вы хотите, чтобы проверить, если ваш веб-сервер может выполнить команду, вы можете:

su - www-data 

После того, как будет sh консоль.

Вы можете выполнить команду перед добавлением кода.

0

Вы можете создать каталог с PHP без вызова оболочки. PHP имеет свою собственную функцию mkdir.

Заменить строку:

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

с этим:

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

и сделать то же самое для второй команды MKDIR.

Первый аргумент - это каталог для создания второго режима (разрешения).

Если вы действительно хотите создать этот каталог в /WWW (примечание о безопасности ниже), вам нужно отредактировать файл sudoers для пользователя WWW-данных, как описано в ответ Ивана или создать каталог и изменить владелец.Вы можете создать каталог /WWW следующим:

sudo mkdir /www 

и изменить владельца со следующим:

chown www-data:www-data /www 

Примечание: Предоставление привилегий SUDO WWW-данных создает брешь в безопасности. Вероятно, вы должны создать каталоги, которые вам нужны, в каталоге/var/www/html /, где разрешения не являются проблемой, а sudo не требуется. Если вы не хотите, чтобы эти каталоги были доступны из Интернета, я бы предложил создать их в/var/www и сменить владельца.

Смежные вопросы