У меня проблема с PHP-сайтом, работающим на IIS 7 на Windows Server 2008.
Существует одна строка кода, вызывающая mkdir, которая является ошибкой, и журнал ошибок читает:
"... разрешено..."
Я исключил что-либо, связанное с разрешениями на папку (я пробовал несколько групп: все, пользователи, IUSR, сетевая служба и т.д., не повезло).
Мне нужно знать, как работает mkdir, проверяет ли атрибут только для чтения родительскую папку?
Если это так, то это может быть причиной проблемы, так как все папки в Windows Server 2008 помечены как "Только для чтения", а флажок выделен серым цветом - Microsoft говорит, что это "по дизайну", но я думаю, что это действительно "плохой дизайн".
Пожалуйста, помогите.
P.S. Строка кода, где ошибки можно найти здесь https://github.com/LimeSurvey/LimeSurvey/blob/070d255ba381d7abcd231d7c9e0c7d11f5578c97/admin/templates.php#L1182, это строка 1182.
РЕШЕНИЕ:
- Это была проблема с разрешениями!
- Мы применяли разрешения к неправильной папке (прикладывали руку к лбу)
- Существуют две папки "Шаблоны":/Шаблоны и /Uploads/Templates
- /Шаблон предназначен для шаблонов по умолчанию, тогда как /Uploads/Templates для созданных пользователями
- Мы предоставили группе "Пользователи" полномочия r/w/execute/modify для папки /Uploads/Templates
- Если раньше мы применяли разрешения для /Templates
- Чтобы отладить это, я использовал
echo
для вывода значения$target
ИЗВЛЕЧЕННЫЕ УРОКИ:
- Всегда читайте сообщение об ошибке - он сказал, что "разрешение отклонено", и я не верил ему.
- Не считайте очевидным, чтобы быть правдой -/Шаблоны не были правильной папкой
- Если код является ошибкой, отлаживайте код и не пытайтесь угадать проблему.
- Отладить код, используя простые методы, такие как вывод значений переменных - например. эхо
- Слушайте большинство - большинство людей здесь были правы, говоря, что ЭТО ПРОБЛЕМА ВЫПУСКА!
- У большинства ошибок есть простое исправление - не ищите чего-то сложного.
Bounty, присвоенный @BOMEz из-за полезной цитаты из mkdir()
документации, которая указала, что я должен дважды подумать о разрешениях. @BOMEz также предоставил индивидуальный ответ и взаимодействовал со мной через комментарии, которые помогли.