Назад | Перейти на главную страницу

Печальная проблема Джо с разрешением PHP (LAMP)

Столько PHP-серверов, сколько существует, можно подумать, что по этой теме будет больше руководств.

Джо начинает как счастливый обладатель нового ПК с Ubuntu.

Джо любит Ubuntu в своем кофе. Джо хочет создать веб-сайт с использованием PHP. Сотни и сотни библиотек Joe apt-get пытаются настроить Apache, PHP и MySQL. Джо наконец-то получает настройку PHP, поскольку рассвет выбивает бедного усталого Джо.

Джо просыпается с работающим PHP. Джо начинает писать код. Джо получает сообщение об ошибке, что PHP не может создавать файлы.

Это беспокоит Джо.

Джо наивно CHMOD указывает каталог / var / www на 0777. PHP работает, и Джо счастлив. Через несколько минут у Джо возникает та же проблема, когда PHP пытается записать другой файл.

Джо понимает, что это плохо.

Джо обнаруживает Чоуна и группу, известную как www-data. Джо переворачивает свой CHMOD и заменяет / var / www www-data. Однако PHP по-прежнему работать не будет. PHP - это никто.

Джо возвращается к работе в McDonalds, понимая, что нет никакой надежды когда-либо написать код PHP.

Николас видит запрос Джо и предлагает, возможно, создать отдельный каталог, в который PHP может писать. Он отмечает, что если Джо не намеревается, что Apache будет обслуживать файлы непосредственно из него, то этот каталог не должен находиться в любом месте, откуда Apache обслуживает.

Он также отмечает, что в дистрибутивах на основе Debian, таких как Ubuntu, Apache (и, следовательно, PHP) почти всегда работает как www-данные, и предполагает, что где-то происходит что-то странное, если PHP, работающий под apache, не может писать в каталоги, доступные для записи этой группой.

Перечитывая, Николас также предлагает сделать папку, которую хочет написать Джо, принадлежащей группа www-data (chgrp www-data $ folder) и затем доступен для записи этой группе, поскольку он думает, что когда PHP запущен, он, возможно, является членом www-data, а не запущен от имени этого пользователя.

Николас отмечает, что процесс установки PHP на Ubuntu под Apache не должен быть намного сложнее, чем «apt-get install apache2 libapache2-mod-php5 php5 php5-mysql», а затем «sudo a2enmod php5», и что если бы Джо пришлось Более того, возможно, что-то в корне не так, что мешает работе PHP.

Николас отмечает, что некоторые из этих постов звучат более покровительственно, чем это необходимо, и винит унаследованный формат от третьего лица.

Если ваш PHP-процесс не предназначен для создания каждого отдельного файла, который находится в / var / www, преобразование / var / www в www-data - плохая идея. Держу пари, что Джо уже создал структуру каталогов в / var / www, и его PHP-процесс пытается писать в один из этих каталогов, принадлежащих кому-то другому, кроме www-data. Вы должны указывать www-data только в тех каталогах, в которые вам нужно писать - остальные лучше оставить собственными как то, что веб-сервер не может писать.

Знает ли Джо, в какой каталог PHP-скрипт пытается писать? Для записи в этот каталог требуются разрешения www-data.