Прежде чем орать DUPLICATE! и изгоняй меня в пропасть, выслушай меня.:)
Я разрабатываю сайт интрасети для компании, с которой я работаю, и изначально я разрабатывал ее непосредственно с моей рабочей станции с помощью Windows 7/IIS. Поскольку я приблизился к завершению сайта/приложений, мне был предоставлен Centos 7, в котором используется Apache, поэтому я начал процесс переноса на этот система. Я разобрался с большинством второстепенных вопросов, и теперь сайт работает. Тем не менее, есть часть сайта, который взаимодействует с нашей базой данных и создает каталог/файл журнала на основе того, кто вошел в систему. Эта часть использует функцию mkdir(), но я получаю с ней проблемы с правами.
mkdir(): Permission denied
Вот что я уже сделал:
- Поскольку я использую Centos 7, пользователь/группа Apache - apache: apache. Я использовал chown и изменил владельца/var/www/html/и Logs папке для пользователя/группы apache. Чтобы быть в безопасности, я дважды проверил httpd.conf, а также проверил запущенные процессы, чтобы убедиться, что у меня есть правильный пользователь/группа.
- Я попытался, просто для тестирования, изменить разрешения всех этих папок на chmod 777, но получить ту же ошибку.
- Искал StackOverflow сверху вниз и получал ответы только на то, что я уже пробовал, но безрезультатно.
Итак, использую ли я chmod или chown для изменения разрешений для папок, к которым вы обращаетесь, я получаю тот же тип ошибки. Чтобы быть в безопасности, я также проверил пользователя PHP, и он также использовал пользователя apache.
Если у кого-то есть дополнительная информация о том, почему он не работает, даже если изменения будут изменены, пожалуйста, просветите меня. Если мне не удалось пропустить одну статью, объясняющую эту конкретную ситуацию, тогда орать дублируйте и изгоните меня в пропасть. lol:)
ИЗМЕНИТЬ Хорошо, поэтому при дальнейшем тестировании я обнаружил 2 проблемы, которые, как представляется, вызывают эту общую проблему.
- PHP пытается установить разрешения для папки при создании из script, и, похоже, серверу это не нравится, даже если apache является владельцем. После удаления этой части кода ошибка разрешений исчезает, и я получаю сообщение об ошибке "no такой файл или каталог".
- При тестировании создания каталогов с помощью Apache через sudo он смог создать каталог без проблем. Однако мой PHP script создает 2 каталога, а затем файл журнала в последнем созданном. Кажется, что вы не можете одновременно создавать два каталога? Например, существует уже созданная папка журналов, и PHP пытается создать под ней два каталога, один для идентификатора пользователя, а затем другую папку внутри этой даты с датой. Поэтому, когда запускается PHP скрипт, он должен создать что-то вроде "Logs/5235/3-3-2015/"
Только для того, чтобы заметить, я попытался установить рекурсивное значение true на mkdir в PHP, но это, когда я получаю проблемы с правами, которые были первоначально отмечены. Когда рекурсивный/режим удален, он не получает проблему разрешения, но не может создавать вложенные каталоги.
EDIT2
Чтобы проверить мои теории, я удалил вложенность и попытался создать mkdir только один каталог, и он генерирует те же ошибки, что и раньше. Хотя он принадлежал Apache, и даже если я установил его на 777, он отбрасывает разрешения.