PHP / Apache: неверные настройки разрешений для загруженных файлов изображений JPEG - PullRequest
4 голосов
/ 17 мая 2010

Я только что установил сервер разработки LAMP и все еще решаю некоторые проблемы. Сервер установлен на одном компьютере, и я использую ноутбук Windows для написания своего кода и тестирования сайта через веб-браузер.

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

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

Имеет ли решение какое-либо отношение к конфигурации Apache? Или есть что-то еще, что я должен делать.

Спасибо вам, Mike

Обновление

Чтобы уточнить, я могу загрузить файл JPEG в /var/www/test/images, но не могу просмотреть изображение в веб-браузере после его загрузки. Мой скрипт работает на производственном сервере (я использую Dreamhost). Это наводит меня на мысль, что проблема в сервере разработки, который я только что настроил. Любая обратная связь приветствуется, даже если это просто ресурсы, которые я должен прочитать, чтобы лучше понять настройку сервера.

Ответы [ 2 ]

1 голос
/ 17 мая 2010

Вам необходимо изменить права доступа к папке, содержащей файл, а не только сам файл. Используйте sudo chmod и sudo chown в каталоге, содержащем файл, к которому вы хотите получить доступ, затем проверьте, чтобы изменения были изменены с помощью команды ls -rl. Разрешения, используемые с chmod, должны быть r и w, а каталог должен иметь значение -rw-r--r--, если используется команда ls -rl, если разрешения были изменены правильно. Также, если вам все еще неясно, как работают chmod и chown, проверьте эту ссылку и эту ссылку .

EDIT:

Введите это:

sudo chmod -R 666 /var/www/test/images

или это:

sudo chmod a=rw /var/www/test/images

... делать то, что ты хочешь делать. Для получения дополнительной информации см. Мою последнюю запись комментария ниже.

1 голос
/ 17 мая 2010

Я бы сказал, что вы, вероятно, используете PHP под другим UID, чем Apache. Вы можете:

  • Настройте apache / PHP, чтобы они работали под одним и тем же uid
  • После загрузки файла используйте PHP для изменения разрешений с помощью функции chmod или измените umask, связанный с процессом PHP, чтобы файл получил правильные разрешения в первую очередь
  • Доступ к изображениям через PHP ( readfile ) - не рекомендуется из-за проблем с производительностью
...