ОБНОВЛЕНО ДЛЯ ДАЛЬНЕЙШЕЙ ЯСНОСТИ:
Согласно http://expressionengine.com/user_guide/installation/installation.html , говорится:
Для большинства хостов Unix типично следующее, но вы можете узнать у своего хоста, можно ли использовать более строгие разрешения, позволяющие PHP выполнять запись в файлы (666) и папки (777) . На серверах Windows следующее не будет применяться, но вам необходимо убедиться, что файлы и папки доступны для записи ExpressionEngine. Возможно, вам придется связаться с вашим хостом для этого.
Не уверен, что это значит. Я могу изменить определенные файлы и папки на 666 и 777 соответственно, где я - chown'er, но вышеупомянутое звучит так, как будто мне нужно разрешить PHP делать это тоже?
ОРИГИНАЛЬНЫЙ ВОПРОС:
Мне нужно убедиться, что PHP может писать в определенные файлы (666) и папки (777).
Как мне это сделать?
источник
Ответы:
Я дополню ответы Рахму и М.В. техническим решением. Все, что следует, действительно только для UNIX-подобных систем.
Прокрутите раздел chmod / chown для примера, используя ACL - более мощный инструмент, чем режимы файлов UNIX.
Поиск имени пользователя вашего веб-сервера
Во-первых, вам нужно знать имя пользователя, под которым работает ваш веб-сервер. Если вы используете Apache, это может быть
apache
илиhttpd
,www-data
и т. Д. На большинстве подобных Debian систем Apache естьwww-data
. Для nginx, как правило, это такжеwww-data
.Чтобы проверить это, попробуйте:
Убедитесь, что имя пользователя, которое возвращает эта команда, является логичным (например, я использую nginx 99% времени, но эта команда возвращает
tomcat7
, веб-сервер Java, который я установил один раз) .Предоставление разрешений веб-серверу: использование
chmod
иchown
Выполнение
chmod
666 или 777 (решение для такого рода проблем в плохих документациях / руководствах) может волшебным образом заставить вещи работать, но небезопасно. Предоставление разрешений 666 или 777 даст доступ к «другим». Так что не только Apache, но такжеgrandmother
иnsa
(при условии, что эти учетные записи пользователей существуют на вашем компьютере - но на самом деле нет, пожалуйста, избегайте этого, если это не только для тестирования / устранения неполадок).Лучше быть более конкретным и дать разрешения только вам и Apache. Измените группу ваших файлов, чтобы предоставить полный контроль над вашими файлами веб-серверу. Для этого рекурсивно измените владельца:
Но, скорее всего, вы можете сохранить полный доступ к своим файлам, изменив только группу:
Затем сделайте все возможное,
chmod
чтобы дать группеwww-data
те же права, что и у вас. Например, если текущий режим равен 640 (6 для вас, 4 для www-данных, 0 для других, переводя на -rw-r -----) , установите его на 660 (6 для вас, 6 для www- данные, 0 для других, перевод на -rw-rw ----) . Посмотрите ответ Рахму, чтобы узнать больше о файловых режимах, это старый, но элегантный механизм.Чтобы избежать манипуляции с загадочными числами
chmod
, вы также можете использовать этот синтаксис:Это означает, что «для группы (
g
), добавить+
(rw
) разрешения на чтение и запись ( ) для папкиyour/folder/
, рекурсивно (-R
)».В 90% случаев этого должно быть достаточно.
Мой предпочтительный метод: использование ACL (Access Control List)
Иногда первого решения недостаточно. Я возьму пример Symfony Framework, который регистрирует и кэширует много данных. Так что для этого нужен доступ на запись в соответствующую папку.
И метод
chmod
/chown
может оказаться недостаточным, если вы параллельно используете консоль Symfony в CLI (под моей учетной записью пользователя) и в Интернете (пользователь веб-сервера). Это вызывает много проблем, потому что Symfony постоянно изменяет разрешения.В этом случае мы будем использовать ACL (Access Control List), который является более продвинутым способом управления разрешениями во многих системах UNIX.
Вот команды, приведенные в официальной документации Symfony ( пожалуйста, измените
app/cache
иapp/logs
под свои нужды ):В системе, которая поддерживает
chmod +a
(т.е. не Debian / Ubuntu)В системе, которая не поддерживает
chmod +a
(чаще всего)Вам понадобится
setfacl
инструмент; возможно, он установлен в вашей системе по умолчанию, поэтому попробуйтеsetfacl -v
проверить, доступна ли команда.Если команда недоступна и вы используете Ubuntu 14.04+, вам просто нужно установить инструмент:
В противном случае следуйте документации по вашей ОС, потому что вам может потребоваться изменить способ монтирования вашего раздела ( документация по Ubuntu здесь ).
И вот мы здесь:
У меня никогда не было проблем с этим методом, доволен или ваши деньги обратно.
источник
Независимо от того, кто является владельцем файлов, 666 разрешений и 777 будет достаточно: последняя цифра гарантирует, что каждый пользователь в системе имеет доступ. Хотя это самый простой способ сделать это, он определенно не самый безопасный по этой причине.
Лучший способ сделать это
Первое, что вам нужно понять, это то, как работают разрешения Unix . В интересах понимания ответа, который я дал по этой ссылке, обратите внимание, что разрешения могут быть переведены в числа:
---
--x
-w-
-wx
r--
r-x
rw-
rwx
A
chmod 666
тогда эквивалентно изменению разрешений наrw-rw-rw
.Затем вы должны выяснить, какой пользователь выполняет PHP-скрипт. Обычно это пользователь вашего веб-сервера. Вот пример того, как это сделать (вы можете заменить Apache именем вашего веб-сервера).
Как только вы узнаете, кто является пользователем, выполняющим сценарии, и кто является владельцем файлов, о которых вы упомянули, вы можете установить соответствующие разрешения. Помните, что предоставление доступа на запись (даже чтение) каждому пользователю в вашей системе может привести к катастрофическим последствиям.
источник
Expression Engine, как и многие другие веб-приложения на PHP, требует доступа для чтения и записи к некоторым файлам и каталогам. Например, EE требуется доступ на запись к своим файлам config.php и database.php и доступ на запись к своим каталогам загрузки файлов.
Документация гласит, что, поскольку большинство серверов работают с PHP как mod_php (и, следовательно, работают с разрешениями веб-сервера), и, как вы, вероятно, будете загружать свои файлы с помощью FTP (или аналогичного), используя своего собственного пользователя, эти файлы и каталоги должны иметь права доступа 666 (каждый может читать и писать) и 777 (каждый может читать, писать и просматривать).
Это не самый безопасный способ, но, безусловно, самый простой, особенно если вы используете хостинг.
Однако, как указано в инструкциях EE, спросите у своего хостинг-провайдера, потому что некоторые используют не mod_php, а fastcgi, suphp или другую версию. Эти серверы работают под PHP как ваш собственный пользователь, поэтому все загружаемые вами файлы уже доступны для чтения и записи PHP и любым файлом, созданным сценариями EE. В этом случае файлы и каталоги, к которым обращается PHP, должны иметь доступ 600 и 700. Другие файлы, к которым должен обращаться веб-сервер напрямую (а не среда выполнения PHP), по-прежнему должны иметь доступ 666 и 777).
источник