Symfony 3 Apache 500 Внутренняя ошибка сервера

Я использую Symfony 3.2.3 и переключился со встроенного веб-сервера PHP на Apache (http://symfony.com/doc/current/setup/web_server_configuration.html, Apache 2.4.18). Это работает для корневой страницы Symfony (http://example.com/, без маршрутизации Symfony), но когда я Я создаю контроллер с маршрутизацией (например, @Route("/development", name="development")), я получаю внутреннюю ошибку сервера Apache 500. При запросе этой стороны (/development) со встроенным веб-сервером PHP все работает нормально. В журнале Apache я не получаю никаких сообщений об ошибках. PHP «display_error» включен, «error_reporting» — «E_ALL», и в файле php «error_log» нет сообщений.

Любая идея, в чем может быть проблема?


person user2625247    schedule 15.02.2017    source источник
comment
Ошибка 500 является общей ошибкой. Скорее всего, есть какая-то другая проблема и, возможно, проблема с веткой. Можете ли вы использовать URL-адрес DEV следующим образом: http://domain.com/app_dev.php. Тогда вы сможете увидеть, в чем ошибка.   -  person Alvin Bunk    schedule 15.02.2017
comment
Если я использую domain.com/app_dev.php/development, он работает без ошибок. При вызове domain.com/app.php/development я был перенаправлен на domain.com/development и снова ошибка 500. Я отключил это в конфигурации apache: ‹IfModule mod_rewrite.c› Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L] ‹/IfModule›. Но ничего не меняет. Можно ли перейти с app.php по умолчанию на app_dev.php?   -  person user2625247    schedule 15.02.2017
comment
Можете ли вы проверить содержимое ваших журналов? Они расположены в var/logs, а должны быть dev.log и prod.log. Вы можете сначала очистить файлы, а затем выполнить тест, пока не получите 500 ошибок, а затем проверить эти файлы. Также запустите php bin/symfony_requirements из командной строки.   -  person Alvin Bunk    schedule 15.02.2017
comment
Эти файлы (prod.log и dev.log) не существуют. Я включил пользовательский журнал с помощью apache: ErrorLog /var/log/apache2/symfony_development_error.log, CustomLog /var/log/apache2/symfony_development_access.log. В тех файлах нет ошибки при вызове стороны, у меня только ошибка 500 в symfony_development_access.log.   -  person user2625247    schedule 15.02.2017
comment
Убедитесь, что вы правильно установили права для папки var согласно этой ссылке. Вы обязательно получите файл var/logs/dev.log после того, как воспользуетесь URL-адресом http://domain.com/app_dev.php.   -  person Alvin Bunk    schedule 15.02.2017
comment
Извините, я проверил /var/logs в корневом каталоге. Да, я нашел эти файлы, ошибка No route found for "GET /development". Но этот маршрут отлично работает с app_dev.php. Нужно ли отдельно добавлять контроллеры для app.php? Контроллер находится в /src/AppBundle/Controller.   -  person user2625247    schedule 15.02.2017


Ответы (1)


Похоже, ваша проблема в том, что ваш кеш не был очищен в процессе производства. Запустите эту команду:

php bin/console cache:clear --env=prod

Затем запустите:

php bin/console debug:router -e=prod

Который должен показать все ваши производственные маршруты. Кстати бегом:

php bin/console

показывает вам все команды, которые вы можете запустить из командной строки, если вам нужно посмотреть что-то еще.

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

person Alvin Bunk    schedule 15.02.2017
comment
Благодарю вас! php bin/console cache:clear --env=prod решил проблему! Замечательно! Как часто нужно очищать кеш? Каждый раз, когда я добавляю новые маршруты? Должен ли я делать это только для рабочей среды или также для разработки? - person user2625247; 15.02.2017
comment
Примечание: php bin/console debug:router -e=prod равно php bin/console debug:router --env=prod. Вы должны щелкнуть стрелку рядом с моим ответом, чтобы показать, что он правильный. - person Alvin Bunk; 15.02.2017
comment
Было бы неплохо, если бы вы наконец ответили на мои вопросы. Большое спасибо! Как часто нужно очищать кеш? Каждый раз, когда я добавляю новые маршруты? Должен ли я делать это только для рабочей среды или также для разработки? - person user2625247; 15.02.2017
comment
Вам нужно только очищать prod кеш каждый раз, когда вы вносите изменения в свои контроллеры или файлы веток. dev выполняется автоматически. Однако, если у вас возникли проблемы, не помешает использовать команду. - person Alvin Bunk; 15.02.2017