php не записывает файлы в подпапку, а в webroot - PullRequest
0 голосов
/ 26 января 2012

Я недавно задал вопрос: Записать поверх файла htaccess?

То, что я пытаюсь создать, - это система CMS для друга, но без сохранения каких-либо подробностей ftp в указанной системе (как и во многих других существующих системах, таких как cushy cms. NB, система потребует от пользователей входа в мой сервер). перенести файлы на свой сервер с моего.). Работа вокруг того, чтобы не хранить детали ftp других людей, которые я разработал, заключается в следующем:

Клиентский сервер имеет файл config.php на своем сервере. Когда config.php получает инструкцию, он затем пытается записать новые файлы с моего сервера (моей системы cms) в папку их webroot с помощью функции php fopen.

На нескольких серверах, на которых я тестировал эту систему, файл config.php не может записывать файлы в подпапку внутри корневого каталога, если у указанной подпапки нет разрешений 777. В посте, о котором я упоминал выше, оба ответа настоятельно рекомендовали не делать этого .. (т.е. не устанавливать 777)

Итак, я сделал еще один быстрый тест, оказалось, что тот же файл config.php, установленный на клиентском сервере, может записывать в webroot (в данном случае 'public_html').

Вопрос

Как может php скрипт на пути: $ _ SERVER [ 'DOCUMENT_ROOT'] '/ cmssystem / config.php';.

не сможет писать в папку (без разрешений 777), такую ​​как: . $ _ SERVER [ 'DOCUMENT_ROOT'] '/ cmssystem / файлы /';

но может записать тот же файл в document_root ?? Также это будет одинаковым на большинстве серверов?

1 Ответ

3 голосов
/ 26 января 2012

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

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

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

Надеюсь, это поможет!

С уважением, Фил,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...