PHP командной строки с shell_exec работает для root, но не для других - PullRequest
0 голосов
/ 13 июня 2010

У меня есть очень простой скрипт, который должен проверить, работает ли в основном shell_exec (или оператор backtick):

#!/usr/bin/php5
<?php

echo "This is a PHP script\n";
echo `ls -l /home/stoysnet/`;

Если я не запускаю это как root, оно всегда дает мне:

$ ./foo.php 
This is a PHP script

Warning: _shell_exec(): Permission Denied in /home/stoysnet/foo.php on line 5

Я пытался запустить это через PHP несколькими разными способами, но всегда получаю одну и ту же ошибку. Однако когда я помещаю скрипт в подкаталог /etc/, принадлежащий root:root и выполняемый как root, он работает.

Что дает?

Обновление: Просто чтобы уточнить:

  • Я пытаюсь запустить его как пользователь stoysnet через командную строку. Я могу выполнить команду, переданную на shell_exec через тот же сеанс.
  • Если переместить сценарий на /etc/somedir/ и выполнить как root, он будет работать как положено.
  • Сам скрипт запускается, только не оператор backtick или shell_exec part
  • Заданы разрешения на выполнение, и 777 тоже не работает.

1 Ответ

0 голосов
/ 13 июня 2010

Вы запускаете этот скрипт от имени другого пользователя, чем stoysnet?Что происходит, когда вы запускаете ls -l /home/stoysnet от имени того же пользователя, с которым вы выполняете сценарий PHP?

Похоже, вам нужно запустить сценарий от имени пользователя, у которого есть разрешение на /home/stoysnet/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...