При запуске проекта без файла .env bootstrap. php выдает фатальную ошибку, когда компонент DotEnv пытается его прочитать. - PullRequest
0 голосов
/ 16 февраля 2020

Я пытался развернуть приложение Symfony с помощью следующего учебного пособия: https://medium.com/@runawaycoin / развертывание- symfony -4-приложение-на-общий-хостинг-с-просто-ftp-доступом- e65d2c5e0e3d

При попытке загрузить сайт я получил 500 внутреннюю ошибку сервера. В соответствии с руководством я посмотрел журналы ошибок хостинга и увидел много вещей о DotEnv. Вот первая часть вывода:

PHP Неустранимая ошибка: Uncaught Symfony \ Component \ Dotenv \ Exception \ PathException: Невозможно прочитать файл среды "/ var / www/vhosts/137/332002/webspace/httpdocs/symfony_temp/.env". в / var / www/vhosts/137/332002/webspace/httpdocs/symfony_temp/vendor/symfony/dotenv/Dotenv.php: 484

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

Как отключить DotEnv, чтобы Symfony не ' я могу использовать его, и я могу просто получить переменные env откуда-то еще? Он размещен в среде хостинга, принадлежащей клиенту, где, я думаю, .htaccess не разрешает доступ к DotEnv, и я не могу изменить это в этом случае, так как у меня нет полномочий редактировать этот файл .htaccess или даже открывать его.

1 Ответ

2 голосов
/ 16 февраля 2020

bootstrap.php принадлежит вам. Если вам не нравится его поведение, просто измените его.

Если вы не хотите использовать DotEnv, просто удалите его и удалите все ссылки на него в вашем коде (например, вышеупомянутый bootstrap.php).

Имейте в виду, жесткие параметры конфигурации в коде, подобном index.php, звучат как плохая идея . Даже если вы не используете переменные среды, DotEnv поможет вам централизовать ваши данные конфигурации в одном файле, не относящемся к вашей логике приложения c.

Для лучшей производительности, настройте переменные среды для производственных параметров, пока он включен dev и используйте composer dump-env prod как уже упоминалось здесь . Это создаст .env.local.php, который вы можете загрузить в производство, а по умолчанию bootstrap.php предотвратит использование DotEnv.

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