exec () запускается через командную строку, но не через веб - PullRequest
1 голос
/ 10 декабря 2010

У меня есть PHP-скрипт, включающий exec(), который будет нормально работать из командной строки, но не в веб-контексте.Сценарий просто такой:

<?php exec('echo "wee" > /home/jason/wee.txt');

Если я назову этот сценарий wee.php и запусту php wee.php, он работает нормально, и wee.txt записывается.

Если я иду на http://mysite.com/wee.php, сценарий делает вид, что работает нормально, но wee.txt на самом деле не пишется.

Есть идеи, почему это происходит?

Ответы [ 4 ]

3 голосов
/ 10 декабря 2010

Веб-сервер работает от имени другого пользователя, и у этого пользователя нет прав на запись в ваш домашний каталог.

1 голос
/ 10 декабря 2010

Другие авторы верны, если предположить, что у пользователя веб-сервера нет прав на запись в ваш домашний каталог. Чтобы убедиться, что они правы, попробуйте изменить код для записи в /tmp/wee.txt. Это должно быть доступно для записи.

Другая возможность заключается в том, что php может быть настроен на отключение вызова exec (). Смотри http://www.cyberciti.biz/faq/linux-unix-apache-lighttpd-phpini-disable-functions/

0 голосов
/ 10 декабря 2010

Заметил, что вы пишете в / home / jason.Обратите внимание, что apache будет выполнять эту команду (т.е. пользователь www-data, если использует Ubunut или Debian)Имеет ли процесс правильные права на запись в эту папку?

0 голосов
/ 10 декабря 2010

Ваш веб-сервер, вероятно (правильно) не имеет соответствующих разрешений для записи в домашний каталог.

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