загрузка изображений с использованием неправильных разрешений
У меня возникла странная проблема при загрузке изображения через серверную часть magento. В настоящее время у меня /media/разрешения установлены на 777
, однако всякий раз, когда я загружаю изображение, оно изменяет разрешения на 600, что делает его недоступным для просмотра, пока я не изменю его вручную обратно на 777
. Есть ли способ установить его по умолчанию, чтобы он был 777
?
2 answers
В принципе, последнее исправление безопасности Magento SUPEE-7405 влияет на права доступа к файлам для изображений, загруженных с панели администратора Magento. Перед применением исправления загруженные файлы через панель администратора, такие как изображения продуктов, страницы cms и т.д., использовали разрешения 0777, и исправление изменяет эти разрешения на 0640 и 0750, что делает их недоступными для всех пользователей.
Для упрощения демонстрации вы можете проверить изменения в этом файле: lib/Varien/File/Uploader.php
diff --git lib/Varien/File/Uploader.php lib/Varien/File/Uploader.php --- --- - chmod($destinationFile, 0777); + chmod($destinationFile, 0640); --- --- - if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0777, true))){ + if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0750, true))){
Для решения этой проблемы была выпущена новая версия SUPEE-7405, но даже без этой исправленной версии вы можете навсегда исправить ее одним из следующих способов:
Вариант 1:
Вы можете вручную изменить файл в файле lib/Varien/File/Uploader.php для настройки разрешений 0640/0750.
Вариант 2:
Потому что Magento ожидает, что веб-сервер будет владеть сайтом файлы:
Http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html#privs-after
Другой способ решить проблему - сделать веб-сервер владельцем файлов
веб-сервер chown-R-имя пользователя magento/root/путь
Имя пользователя веб-сервера обычно является www-data или apache.
Для получения более подробной информации вы можете посетить этот учебник
Использование Magento 700 permissions (drwx------)
для каталогов media/
и var/
предоставляет полный контроль (то есть чтение/запись/выполнение) владельцу и никаких разрешений никому другому.
Magento ожидает, что веб-сервер будет владеть файлами сайта:
Http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html#privs-after
Вы можете решить эту проблему, сделав веб-сервер владельцем файлов.
chown -R web-server-user-name magento/root/path
Имя пользователя веб-сервера обычно www-data
или apache
.
Если вы будете следовать инструкциям по приведенной выше ссылке, веб-сервер получит доступ на чтение ко всем файлам и доступ на запись к медиафайлам и файлам var. Это должно быть все, что вам нужно для обычной работы сайта. Если вам нужно использовать Magento Connect, вам придется временно предоставить веб-серверу доступ на запись ко всем файлам.
Все права доступа к файлам установлены на CHMOD 640, что делает их недоступными для всех пользователей.
Только пользователь веб-сервера необходим доступ к файлам. Нет необходимости предоставлять какие-либо разрешения всем пользователям.
Вы можете предоставить доступ определенному пользователю, если, например, вам нужно отредактировать или загрузить файлы через FTP. В этом случае я устанавливаю пользователя, которому принадлежит файловая система, и устанавливаю группу файлов на веб-сервер:
cd magento/root/directory
# Set ownership
# 'username' should be the file system owner username
# 'webserver' should be the webserver username
chown -R username:webserver .
# Give the user read/write access to all files.
# Give the webserver read access to all files
find . -type f -exec chmod 640 {} \;
find . -type d -exec chmod 2750 {} \;
# Give the user and the webserver read/write access to var and media
find var/ -type f -exec chmod 660 {} \;
find media/ -type f -exec chmod 660 {} \;
find var/ -type d -exec chmod 2770 {} \;
find media/ -type d -exec chmod 2770 {} \;
chmod 2770 includes
chmod 660 includes/config.php
Приведенные выше команды предоставят владельцу вашей файловой системы доступ на чтение/запись ко всему, а веб-серверу - доступ на чтение ко всему. Веб-сервер также сможет писать в каталоги мультимедиа и var.