Предоставление разрешения на запись в PHP на UBUNTU 14, file_put_contents не работает

Я должен создать скрипт, который запускается через crontab. Я установил новую Ubuntu на виртуальной машине и начал тестирование

Поэтому я понял, что PHP не записывает файлы (с file_put_contents) в папку / var / www / html /, когда я запускаю скрипт в Терминале (sudo php filename.php)

Если я удаляю sudo из команды, это говорит, что разрешение отклонено. Я также попытался создать другую папку внутри ../html/, а также попробовал chmod 777. Кажется, ничего не работает. Я видел эту проблему несколько лет назад, но я не могу найти решение

Кто-нибудь из вас знает, что происходит?

0

Решение

Проверьте исполняемый файл php, чтобы увидеть, не вызывают ли права setuid PHP отбрасывать привилегии суперпользователя, которые вы дали ему с помощью sudo.

Я знаю, что вы не запускаете это через веб-сервер, но для тех, кто это делает, я нахожу слишком страшным запускать PHP с повышенными привилегиями. Если мне действительно нужно сделать что-то опасное, я изолирую это от как можно меньшего количества кода и закодирую как скрипт на perl с suid root. (Нет, вы не можете сделать это на виртуальном хостинге.) Затем я выхожу на Perl из PHP. В этом случае Perl автоматически запускается в режиме Taint, заставляя вас очистить все ваши входные данные, прежде чем продолжить. (Эта техника примерно с 2001 года, возможно, сейчас есть лучший способ.)

…Том Робинсон

0

Другие решения

Других решений пока нет …