Symfony 3 - не разрешен доступ к app_dev.php

Я только что купил общий хостинг (OVH.com - PHP 5.6.21) для размещения проекта Symfony 3 (версия 3.1.3).

При загрузке файла config.php Symfony на сервер отображаются только 2 сообщения с рекомендациями по улучшению скорости сайта, но ничего, что могло бы помешать работе сайта. Итак, хостинг кажется достаточно хорошим для правильной работы этого проекта.

Я отправил все файлы и папки на сервер, но когда я пытаюсь зайти на страницу app_dev.php, у меня появляется следующее сообщение об ошибке:

You are not allowed to access this file. Check app_dev.php for more information.

Я знаю, что должен добавить свои IP-адреса в массив разрешенных IP-адресов в файле app_dev.php, поэтому вот что я сделал (XXX.XXX.XXX.XXX — мой IP-адрес):

if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', 'XXX.XXX.XXX.XXX', 'fe80::1', '::1']) || php_sapi_name() === 'cli-server')
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

Я пробовал разные вещи, чтобы увидеть, откуда может возникнуть проблема:

  • удалите часть !(in_array) из условия => Ошибка 500
  • удалить весь блок условий => я могу получить доступ к сайту (даже если все еще есть некоторые ошибки, связанные с MySQL)

Файл var/logs/dev.log абсолютно пустой, даже если права 777.

Если у вас есть какие-либо идеи о том, откуда может возникнуть проблема, я был бы рад, если бы вы могли мне помочь.

Заранее спасибо за вашу помощь !

PS: когда я пытаюсь получить доступ к среде prod (app.php), я получаю сообщение об ошибке 500, но файл var/logs/prod.log содержит строки об ошибках MySQL... так что я думаю, это нормально.


person Daaaaa    schedule 17.08.2016    source источник
comment
для стартера; выгрузите каждую часть вашего условия if, чтобы увидеть, что не удается, или попробуйте одно условие за раз   -  person Rooneyl    schedule 17.08.2016
comment
Спасибо. Кажется, проблема связана с условием $_SERVER['HTTP_X_FORWARDED_FOR']. Не уверен в последствиях, если я его удалю.   -  person Daaaaa    schedule 17.08.2016
comment
Вы все еще получаете 500 ошибок в PROD даже с ответом @Gerry? Приведенная выше конфигурация выглядит правильной для разрешения доступа DEV.   -  person Alvin Bunk    schedule 17.08.2016
comment
Спасибо, ошибок больше нет, теперь все работает нормально (но я все еще не могу получить доступ к разработчику из-за состояния HTTP_X_FORWARDED_FOR)   -  person Daaaaa    schedule 18.08.2016


Ответы (1)


Читая код, вы точно знаете, в чем проблема :) Или, по крайней мере, это может быть одна из двух причин:

  • Ваш запрос содержит заголовок Client-IP или X-Forwarded-For, который может быть установлен обратным прокси-сервером (например, Varnish), установленным перед вашим сайтом.
  • Вы не настраиваете правильный IP-адрес.

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

person Gerry    schedule 17.08.2016
comment
Я знаю, что не должен использовать app_dev.php в продакшене, но это первый раз, когда я пытаюсь поместить проект Symfony в продакшн. На моем локальном компьютере все работает нормально, поэтому я хотел убедиться, что на удаленном компьютере то же самое. Кажется, проблема связана с условием $_SERVER['HTTP_X_FORWARDED_FOR']. Не уверен в последствиях, если я его удалю. - person Daaaaa; 17.08.2016
comment
В случае наличия прокси (что, похоже, так и есть), REMOTE_ADDR обычно содержит IP-адрес прокси-сервера, а не ваш собственный общедоступный IP-адрес. Почему именно вы хотите использовать среду разработки в производстве? - person Gerry; 17.08.2016
comment
Я просто хотел быть уверенным, что все на продакшне похоже на мою локальную машину: работает как в рабочей среде, так и в среде разработки. - person Daaaaa; 17.08.2016