2010-09-17 3 views
0

У меня есть сценарий bash, который работает , не нуждаясь в корне.Что (за исключением необходимости быть root) может вызвать ошибку разрешений при использовании PHP shell_exec?

Но когда я запускаю его через shell_exec() (или system() или exec()), как это:

return system("/home/tom/rrd/rrdtool-drawgraph.sh $interval $multiples - debug 2>&1;"); 

я получаю следующее сообщение:

ш:/Главная/Том/RRD/RRDtool -drawgraph.sh: Разрешение отклонено

(Странно, сообщение повторяется. Не уверен, что это действительно так? Редактировать: он, кажется, не повторяется, когда я использую backticks вместо shell_exec. Go figure.)

Я пробовал использовать права доступа 777. Я попытался изменить владельца и группу на www-data. Я изменил каталог, в который он вставляет свой вывод, чтобы иметь одинаково разрешительные разрешения.

Он все еще не работает.

Единственное, что я могу придумать, это то, что сценарий находится в моем домашнем каталоге. Если это проблема, я был бы удивлен (потому что мой веб-корень также находится в моем домашнем каталоге), но я готов к исправлению. Если это проблема, могу ли я исправить ее, не требуя корневых привилегий?

Если это не связано с тем, чтобы быть в моем домашнем каталоге, в чем проблема? И как мне это исправить?

ответ

0

Оказывается, был из-за расположения сценариев.

Я переместил все это на /usr/share/rrdscripts, и он отлично работает.

Как ни странно, с выходными файлами не возникает разрешений: сценарий все еще способен записывать в папку вывода в моем домашнем каталоге.