У меня есть приложение, разработанное с помощью Symfony 5, которое отлично работает в моей локальной среде (Vagrant, работающий с Laravel Homestead box), но когда я развертываю его на живом сервере, оно вылетает с пустой белой страницей и отвечает 500 Internal Server Error.
Когда я подключаюсь к серверу по SSH и вручную меняю значение переменной APP_ENV на dev с prod внутри моего файла .env, я вижу ошибку:
Попытка загрузить класс WebProfilerBundle из пространства имен Symfony Bundle WebProfilerBundle. Вы забыли инструкцию использования для другого пространства имен?
Я использую Github Actions для развертывания своего приложения, и в своем действии я устанавливаю такие зависимости PHP
— name: Install dependencies run: | export APP_ENV=prod composer install —no-dev —optimize-autoloader
Поэтому я не хочу, чтобы на моем производственном сервере зависели только разработки, отсюда и флаг —no-dev, и, если я правильно понимаю, WebProfilerBundle используется для проверки запроса в процессе разработки, поэтому он имеет отступ для использования только в среде dev.
Почему Symfony считает, что нужно загрузить этот пакет? Кроме того, я должен был настроить свои пользовательские страницы ошибок для ошибок 404 и 500 (добавление файла bundles/TwigBundle/Exception/error.html.twig в папку templates), почему не отображается моя страница пользовательских ошибок? Почему у меня пустая белая страница?
Я подозреваю, что это что-то с тем, как я развертываю (поскольку он работает на моей локальной машине).
Я устал убирать флаги из установки композитора (так что просто запускал composer install как есть), но это также привело к ошибке.
Вы можете просмотреть мои действия по развертыванию здесь </ а>. Также вот ссылка на репозиторий.
Приложение должно работать в этом домене: https://thebedechkacase.com/
Взгляните на это? stackoverflow.com/questions/58593872/ — person Cooty schedule 23.09.2020
why isn’t my custom error page shown? Просто предположение, но, скорее всего, потому, что эта ошибка возникает до загрузки вашей пользовательской логики страницы. — person Cooty schedule 23.09.2020
Скорее всего, в вашем файле composer.json есть что-то в post-install-cmd, которое пытается использовать этот класс — person Cooty schedule 23.09.2020
На ум приходят несколько вещей: Во-первых, вам очень важно знать, что полученная вами ошибка не имеет ничего общего с проблемой, с которой вы столкнулись. Вы устанавливаете приложение с флагом —no-dev, и поэтому профилировщик не устанавливается. Когда вы переключаетесь на dev env, он требуется, но еще не установлен, поэтому возникает ошибка. В вашем случае я предполагаю, что вы пропустили некоторые настройки перезаписи на своем сервере. Взгляните на это: symfony.com/doc/current/setup/web_server_configuration.html Сообщите мне, решит ли это вашу проблему — person Cooty schedule 24.09.2020
@floGalen правильно объясняет, что вызывает это конкретное сообщение об ошибке. Если вы все еще застряли, подумайте о том, чтобы остаться в разработке, просто используя простую «установку композитора». Это может указать вам на настоящую проблему (проблемы) развертывания. Как только проблемы будут решены, вернитесь в исходный рабочий режим. Вы можете просто начать с проверки журналов вашего сервера. — person Cooty schedule 24.09.2020
Источник: