2016-12-10 3 views
0

Я пытаюсь выполнить следующие команды в PHP:разрешений для запуска питона скрипт с PHP Exec()

<?php exec("xdg-open file") ?> 
<?php exec("python file.py") ?> 

Все файлы находятся в /var/www/html.

Другие более простые команды, похоже, работают. Например:

<?php exec("touch file.txt") ?> 
<?php echo exec("ls") ?> 
<?php echo exec("whoami") ?> 

Я просто хочу, чтобы иметь возможность запускать любые команды Python/оболочки с помощью PHP (без них нуждающихся Sudo). Это вопрос разрешения? Если да, что я могу сделать?

ответ

0

Чтобы выполнить файл, убедитесь, что у файла есть исполняемые разрешения.

chmod +x file.py 

В среде сервера, если запустить другой процесс, например, PHP через Apache/Nginx, эти права должны быть связаны с пользователем, запустившим этот процесс сервера.

Например, предположим, что ваше имя файла file.py разрешения

fily.py должен быть установлен таким образом, владелец такой же, как веб-сервер и что владелец имеет исполняемые разрешения.

с chown мы можем изменить владельца, позволяет сказать, что наш веб-сервер работает как пользователь HTTP и HTTP группы:

chown http:http file.py 

chmod o+x file.py 

Если процесс не является владельцем, но в той же группе:

chmod g+x file.py 

или ни:

chmod o+x file.py 
+0

Я только попробовал то, что вы сказали, и это все еще не работает; возможно, я сделал что-то не так. Пользователем, используемым сервером, является www-data, который также является владельцем. Я пробовал играть песню, используя скрипт python, и ничего не происходит. – C10H15N

+0

Не могли бы вы предоставить показанный результат. – Exodus

+0

Могут быть разные вещи, которые нужно учитывать, является ли PHP безопасным? например. – Exodus

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