doc_root против $ _SERVER ['DOCUMENT_ROOT'] и, наконец, open_basedir приходит на вечеринку - PullRequest
0 голосов
/ 20 декабря 2018

Во-первых, я не понимаю разницы между директивой конфигурации "doc_root" и серверной переменной $ _SERVER ['DOCUMENT_ROOT'].

В руководстве по PHP сказано следующее:

Вы можете установить корень документа PHP-скрипта с помощью директивы конфигурации doc_root в файле конфигурации или установить переменную среды PHP_DOCUMENT_ROOT.Если он установлен, CGI-версия PHP всегда будет создавать имя файла для открытия с этим doc_root и информацию о пути в запросе, так что вы можете быть уверены, что за пределами этого каталога не выполняется сценарий (за исключением user_dir ниже).

Я не уверен, но я думаю, что это говорит о том, что если вы установите директиву "doc_root", указывающую на вашу "html_public" (или корневую папку, которую вы используете), вам не нужнобеспокоюсь о том, куда указывает $ _SERVER ['DOCUMENT_ROOT'], .. правильно ??

А как же наоборот?Если вы установите переменную $ _SERVER, разве вам не нужно устанавливать также директиву?

Я понимаю, что директива имеет преимущество перед серверной переменной, поэтому достаточно ли безопасно устанавливать только директиву?

С другой стороны, (и, кстати, мои извинения за мое невежество, потому что я, вероятно, задаю «тривиальные» вопросы), директива «open_basedir» выглядит очень похоже (для меня это точно так же) в своей цели / назначении.В руководстве по PHP написано:

Ограничьте файлы, к которым PHP может получить доступ, указанным деревом каталогов, включая сам файл.

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

Мой вопрос нетолько о безопасности, но и о производительности, потому что я должен установить все переменные, директивы и так далее в моем файле .htaccess (у меня нет доступа к файлам php.ini, vhost и htppd.conf).

...