У меня эта проблема с другим веб-хостингом, конкретными сценариями загрузки, которые могут загружаться в папку только в том случае, если у нее есть разрешение 777 (что рискованно). На тестовом сервере (на другом хосте) 755 работает хорошо.
На другом веб-хостинге файлы журналов, сгенерированные файловыми функциями PHP, не могут быть записаны в какое-то время, но другие файлы таинственным образом остаются неизменными (например, файлов журнала за всю неделю составляет 655, и они работают хорошо, но только сегодняшний журнал- файл не работает, если он не установлен на 777).
Я в большей степени разработчик приложений, чем эксперт по серверным бэкэндам, поэтому такое поведение меня до бесконечности озадачивает. Почему они происходят? Что может быть сделано?
Некоторые хосты запускают apache в режиме с низким уровнем привилегий. Вы должны явно предоставить миру доступ на запись к каталогам, в которые Apache должен писать. Кроме того, процесс apache должен иметь возможность читать все файлы, чтобы любой другой пользователь в той же системе мог читать файлы / каталоги в системе. Разумеется, верхним каталогам нужны только привилегии выполнения, чтобы переходить в них, что не позволяет вам перечислить файлы внутри этих каталогов. Удаленная оболочка не сможет изменять файлы, кроме тех, которые доступны для записи всем.
Некоторые хосты запускают php в режиме setuid, что означает, что php работает как ваш идентификатор пользователя. Хотя это обеспечивает большую безопасность от других пользователей в системе, теперь каждый файл в вашем корневом веб-каталоге может быть изменен любым процессом php. Удаленная оболочка сможет изменять все файлы в вашем веб-пространстве.
Вам необходимо принять решение, является ли один из них более безопасным, чем другой. Запуск apache в режиме с низким уровнем привилегий предотвращает повреждение вашего сайта веб-скриптами, но оставляет его открытым для других пользователей в этой системе, которые могут читать файлы, которые могут включать ваш файл конфигурации wordpress, содержащий ваше имя пользователя / пароль / имя хоста mysql.
вы используете свой сервер с разными пользователями? Как выглядит право собственности на ваши файлы?