PHP chmod () не изменит разрешения на 0444 - PullRequest
0 голосов
/ 13 апреля 2011

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

Есть 2 основных переключателя, один из которых позволяет пользователю изменить файл на «доступный для записи» => 0777, а другой - на «защищенный» => 0444. Первый работает нормально, однако со вторым, когда я его запускаю ошибки не отображаются, и он действует, как если бы он успешно изменил разрешения, но просмотр по FTP показывает, что файл на самом деле является 0644, кажется, он не может успешно измениться на 0444. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2011

Я думаю, что подход неправильный, php всегда будут нужны разрешения на запись, чтобы иметь возможность что-либо изменить в будущем, поэтому жесткое разрешение только для чтения файлов - не лучший способ.

Решениебудет таблица базы данных или другой файл конфигурации, который отслеживает, какие файлы заблокированы и какие файлы могут быть изменены (и кем ....).Затем вы можете добавить проверки php, чтобы узнать, может ли определенный пользователь изменить определенный файл.

0 голосов
/ 13 апреля 2011

Учетная запись, выполняющая PHP, должна владеть файлом, прежде чем вы сможете изменить разрешения.«www-data» или «apache» являются общими учетными записями пользователей.

Создание чего-то осмысленного для чтения или записи на глобальном уровне - действительно плохая идея.Также плохая идея сделать его исполняемым.Вы, вероятно, хотите 400 и chmod 500.

...