права доступа группы и владельца неверны, когда php загружает файлы - PullRequest
5 голосов
/ 08 октября 2011

Не уверен, что это проблема конфигурации php или разрешения файла linux. У меня проблема, когда файл загружается через php с помощью move_uploaded_file () в каталог, в котором group установлен на ubuntu и owner установлен на www-data , загруженный файл владелец и group разрешения изменяются на www-data , что вызывает проблемы при входе в мой скрипт на python и выполнить свою задачу в загруженном файле.

пример:

move_uploaded_file($tempFile,$targetSAVE);

- Каталог $ targetSAVE имеет значение:

group: ubuntu
owner: www-data
permissions: 0755

- php загруженный файл меняет владелец и группа на www-data

new file changes to:
  group: www-data  <-- need this set to *ubuntu*
  owner: www-data
  permissions: 0755

- скрипту python требуется, чтобы группа загруженного файла была установлена ​​на ubuntu

как мне настроить php для установки владельца или группы загруженных файлов на ubuntu или, если это проблема с правами доступа к файлу linux, как я могу это исправить?

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

group: ubuntu
owner: www-data
permissions: 0755 

Ответы [ 3 ]

3 голосов
/ 10 октября 2011

Нашел решение.После того, как я выдернул свои волосы и попробовал все остальные ответы, оказалось, что это очень просто, вот что сработало.

chown -R ubuntu:www-data /var/www/
chmod -R 775 /var/www/

После этого скрипт python отлично выполняется с php.

1 голос
/ 08 октября 2011

Это происходит потому, что PHP запускается как пользователь, который запускает веб-сервер. Фактически все веб-сайты в вашей системе будут работать как этот пользователь / группа, и, следовательно, все они имеют доступ для чтения файлов и каталогов каждого из них, созданных с помощью сценариев php.

Установка Apache mod suPHP , вероятно, является самым простым решением этой проблемы. Это позволит вам запускать php-скрипты на виртуальном хосте как конкретный пользователь и группа. Вы также можете запустить PHP как CGI и использовать Apache suEXEC , но настроить этот suPHP немного сложнее.

В качестве альтернативы, вы должны просто иметь возможность выбирать файлы из ваших сценариев для соответствующего пользователя / группы, но в результате веб-сервер больше не сможет читать / редактировать эти файлы после смены владельца.

0 голосов
/ 08 октября 2011

Полагаю, я бы просто добавил директиву chirp в конец скрипта PHP, если это сработает в вашем случае.http://us.php.net/manual/en/function.chgrp.php

Загляните в / etc / passwd, чтобы получить числовой идентификатор пользователя "ubuntu".

Примечание из документов: «Только суперпользователь может произвольно изменять группу файла; другие пользователи могут изменять группу файла на любую группу, членом которой является этот пользователь».

...