2013-05-20 3 views
1

Я нахожусь на общем хосте (с безопасным режимом), и у меня возникли проблемы с созданием каталогов, на которые PHP действительно может писать. Скажем, моя учетная запись называется matty, а учетная запись apache называется web.Создать каталог с пользователем скрипта как владельца

Когда я загружаю скрипты с использованием FTP, они принадлежат matty, и они также запускаются под пользователем matty. Но по какой-то причине, если я использую mkdir или file_put_contents для создания нового каталога или файла, он принадлежит пользователю web. Безопасный режим останавливает мои скрипты от добавления файлов в новый каталог, потому что UID не совпадают. Все существование учетной записи web не имеет для меня никакого смысла, поскольку все мои сценарии работают под моим собственным именем пользователя, и это происходит только тогда, когда скрипты создают свои собственные файлы/dirs.

Я попытался использовать chown('directory', 'matty') сразу после создания, но получить сообщение об ошибке «Не владелец в ...». Мне просто нужно создавать файлы и каталоги под именем пользователя исполняемого в настоящее время скрипта или некоторым жестко запрограммированным именем пользователя.

ответ

2

Вам необходимо настроить каталог загрузки на web с помощью FTP-клиента или оболочки.
И теперь PHP сможет записывать в этот каталог.

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

+0

Не кажется возможным на этом хосте. У меня только FTP-доступ, а поля имени пользователя/группы выделены серым цветом, поэтому chown должен быть отключен. Я думаю, что я могу написать, нужно написать оболочку, которая создает файлы с использованием FTP, так как файлы, созданные вручную через FTP, работают нормально. Мой хост никогда не отключит безопасный режим, поэтому я полагаю, что это единственное последнее средство? – Matt

+0

@Matt «Мой хост никогда не отключит безопасный режим» переместите хозяина ТЕПЕРЬ, его просто не стоит боль, чтобы иметь дело с дерьмовым хозяином, когда есть тысячи хороших. –

+0

Это сложная ситуация. Мы получаем этот хостинг бесплатно от огромного быстрого локального центра обработки данных. Было бы стыдно потерять все это, но вы правы - это была страшная боль, пытающаяся заставить все работать на этом хосте. – Matt

0

У меня была такая же проблема на общем хостинге без доступа ssh & ограниченный контроль через FTP. Приложение (работающее как apache) не могло создать файл в папке, загруженной через FTP (так что у него был другой владелец), без разрешения папки 777, чего я НЕ хотел. я получил вокруг него следующие шаги танца:

1) через FTP, создайте папку & установить права доступа (временно) до 777

2) с помощью PHP скрипт, создать вторую папку в первом один с разрешениями, установленными в 755. PHP не должен иметь никаких трудностей писать в эту вторую папку.

3) вернуться назад и установить разрешение первой папки на 755 (через FTP)

та да - нет 777 нет папки больше, но PHP может написать в папку ок. ура!