Я размещаю экземпляр LAMP EC2 через Amazon AWS.
Часть моего сайта позволяет пользователям загружать файлы. К сожалению, сервер не может хранить постоянные копии в папке «uploads», поскольку ему не хватает необходимых разрешений.
Вызывается PHP-скрипт, который будет хранить файл в папке «uploads». Загрузка не удастся, пока папка загрузки имеет стандартные 755
а также 775
разрешения. Тем не менее, когда я изменяю права доступа к папке 777
(мировые разрешения), это работает.
По понятным причинам я не хочу использовать 777
мировые разрешения. Как я могу сделать так, чтобы сервер имел разрешение на запись файлов в папку «uploads»?
Спасибо, парни.
Это может быть проблемой с правами собственности на папку загрузки.
Владение папкой можно проверить с помощью следующей команды
ls -l Пример вывода: -rw-r - r-- 1 root root 0 авг 31 05:48 demo.txt
.
Здесь видно, что как пользователь файла является пользователем root, так и группа файлов является пользователем root.
Выполнение этой команды в каталоге покажет права доступа и владение всеми файлами и папками в этой папке.
Теперь со стеком LAMP вы должны убедиться, что
Apache User, т.е. www-data и Apache Group снова www-data.
Это можно сделать, перейдя в корневую папку вашего приложения и выполнив команду
chown -R www-data: www-data Пример вывода: -rw-r - r-- 1 www-data www-data 0 31 августа, 05:48 demo.txt
Это рекурсивно изменит владельца всех файлов и папок в корневом каталоге на пользователя и группу Apache.
Распространенной причиной этой проблемы является то, что когда вы загрузили пакет или файлы, вы, очевидно, сделали это как локальный пользователь или пользователь root, и Apache не имеет прав для этого. Или вы создали каталог вручную.
Это основная идея для решения проблемы, вам также может понадобиться выполнить эту команду и изменить владельца только своего каталога «uploads».
Других решений пока нет …