2010-06-13 3 views
0

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

#!/usr/bin/php5 
<?php 

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

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

$ ./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, он работает.

Что дает?

Update: Просто для уточнения:

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

Каковы разрешения/права на каталог/home/stoysnet? Чтобы иметь возможность «ls» в каталоге (например: list/enumerate its contents), пользователь, выполняющий скрипт, должен иметь разрешения на выполнение в каталоге (либо как владелец, группа или как «все»). –

ответ

0

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

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