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