Другая проблема с правами доступа к файлам

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

Мой php-код принимает выбранное изображение, загружает его в папку с изображением и называет его соответствующим образом.

Проблема здесь в том, что я должен установить папку изображений на 777, чтобы это работало.

Мой вопрос в том, на что должны быть установлены разрешения? И любые идеи, почему это не работает, если нет 777?

Если вам нужно больше ввода, просто дайте мне знать …

благодаря

ОБНОВИТЬ

У меня есть пользователь (danny), у которого есть root-доступ … Папка, куда загружаются изображения, а также файл «image_upload.php», который делает магию, принадлежит пользователю «danny». Затем я просто попытался установить их на chmod 764, но когда я это сделаю, у меня возникла проблема.

По-видимому, мне нужно установить r + w + e разрешения для «публики», чтобы все работало.

Не могу понять, почему …

еще раз спасибо

Related of "Другая проблема с правами доступа к файлам"

Забудьте о Откровениях, 777 – это истинное число зверя 🙂

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

Если это так (и это должно быть), вам просто нужно добавить этого пользователя в определенную группу этого каталога и разрешить доступ к записи в группе, возможно, 764 , хотя последняя цифра может измениться в зависимости от других потребностей.

Вероятно, вы можете выяснить, какой пользователь работает, изменив сценарий загрузки:

 system ("id >/tmp/id.txt") 

или что-то подобное в PHP для запуска инструмента командной строки.

Затем проверьте файл /tmp/id.txt для получения подробной информации. У вас будет что-то вроде:

 uid=1000(php) gid=1000(phpgrp) groups=1000(phpgrp) 

После того, как вы найдете это ( php ), выработайте группу этого каталога images :

 pax> ls -ald images drwxr-xr-x 4 pax paxgrp 4096 2010-06-14 16:38 images 

Это будет paxgrp из вышеупомянутой стенограммы. Затем убедитесь, что пользователь php добавлен в группу paxgrp . Обычно это можно сделать в /etc/group , изменив, например:

 paxgrp:x:1027:bob,george 

в:

 paxgrp:x:1027:bob,george,php 

затем убедитесь, что разрешения каталога позволяют записывать группу (но не мир).


И, основываясь на вашем обновлении, на самом деле не имеет значения, кто владеет вашим файлом PHP, только кто его запускает , и это может быть вовсе не danny .

В противном случае я мог бы удалить любой файл на жестком диске, потому что rm принадлежит root 🙂

Самый быстрый способ найти этого пользователя – это изменить этот файл, чтобы он выводил id информацию, как я предлагал.

И любые идеи, почему это не работает?

Помимо разрешений, обязательно укажите правильные настройки для:

  • file_uploads
  • upload_max_filesize
  • memory_limit
  • max_execution_time
  • post_max_size

Видеть:

  • Как оптимизировать установку PHP для обработки больших загрузок файлов

Также убедитесь, что:

  • Вы указали enctype="multipart" в form
  • Проверьте массив файлов с помощью print_r($_FILES);

Ответ здесь замечательный, я просто хотел добавить еще одну возможность. Вы упомянули, что у пользователя «Дэнни» есть root-доступ, и этот Дэнни владеет файлами / каталогами. С помощью PHP-скрипта, отличного от CLI, пользователь веб-сервера должен иметь скрипт, тогда вам не понадобится публика, чтобы он мог читать записи и выполнять (честно говоря, если вы это сделаете правильно, вы должны иметь возможность устанавливать разрешения для 700 и все еще в порядке – хотя обычно это никогда не ограничивается).