Laravel 5.8, ошибка команд ремесленника: не удалось проанализировать файл dotenv из-за неверного имени
Эта проблема возникает только с Laravel 5.8 на моем общем хостинге.
На моем виртуальном хостинге с Laravel 5.7 он работает нормально.
Он отлично работает в моей локальной среде с Laravel 5.8.
проблема в:
каждый раз, когда я запускаю команды php artisan (на моем общем хостинге только с Laravel 5.8) я получаю эту ошибку
Файл среды недействителен! Не удалось проанализировать файл dotenv из-за неверного имени.
Ошибка в [APP_NAME].
моя.env первая строка: APP_NAME=rased
Также мой сайт после обновления до Laravel 5.8 становится белой пустой страницей!
13 ответов
Это общая ошибка, связанная с анализом файла.env. Вы увидите, что это указано в ошибке, например
The environment file is invalid!
Failed to parse dotenv file due to unexpected whitespace.
Failed at [This will fail].
В этом примере это было вызвано наличием неэкранированных пробелов в APP_NAME
поле ie
APP_NAME=This will fail
Чтобы исправить это, используйте кавычки, например
APP_NAME="This is better"
Это общая ошибка, возникающая при изменении названия нашего приложения. Чтобы удалить эту ошибку, просто сделайте это.
APP_NAME=My Project Name
к этому
APP_NAME="My Project Name"
Вам просто нужно добавить курс вокруг имени. Спасибо
Я нашел причину этой проблемы.
Это было из-за разделителя строк в файле.env!
Это должен быть CRLF, а не LF
Мой файл.env был LF
Я получил аналогичную ошибку при обновлении с Laravel 5.5 до Laravel 5.8.
Файл среды недействителен! Не удалось проанализировать файл dotenv из-за недопустимого имени. Ошибка на [//APP_ENV].
5.5 будет принимать комментарии в стиле C к APP_ENV:
// env file setup for production environment
//APP_ENV = production
//APP_DEBUG = false
// env file setup for local environment
APP_ENV = local
APP_DEBUG = true
Пока 5.8 не будет. # работает для комментариев:
# env file setup for production environment
#APP_ENV = production
#APP_DEBUG = false
# env file setup for local environment
APP_ENV=local
APP_DEBUG=true
Я пробовал удалить пробелы, поскольку новое приложение 5.8 устанавливается без пробелов в этих определениях. Это не помогло.
Любопытно, что у меня все еще есть комментарии в стиле C в других местах файла, поэтому только для APP_ENV?
Я изменил кодировку.env, и это было решено.
UFT-8 без спецификации
Благодарность
У меня была точно такая же проблема, но другое решение. CRLF не имел никакого значения.
Это сводило меня с ума, и я где-то читал, что комментарии в стиле C больше не поддерживаются. В моем env-файле их не было, но в отчаянии я добавил следующую строку в начало файла:
# getting tiresome.
Я не думаю, что формулировка важна, но ключевым моментом был комментарий.
После этого все заработало. Не знаю почему, но так оно и было.
Перенесемся на несколько месяцев, и проблема вернулась, когда мне в следующий раз придется обновить Laravel. Это было немного странно, потому что файл был таким же. На этот раз мне нужно было убедиться, что я сохранил файл как UTF-8 без спецификации.
Недавно я столкнулся с этой же проблемой в своем приложении для Laravel 6.12.0.
Мне удалось решить эту проблему, добавив пустую новую строку / пробел вверху .env
файл.
Пример файла.env:
[add a new line here]
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Я обнаружил, что если вы объявите APP_NAME в кавычках в файле .env, это позволит использовать пробелы в имени приложения, но убедитесь, что вы перезапускаете сервер с помощью команды (php artisan serve). Например: APP_NAME='Laravel Login'
Это подходит для меня.
MAIL_FROM_NAME= Подтверждение учетной записи
Я просто делал пробелы между двумя словами. Просто постарайтесь этого избежать, например: Account_confirmation
MAIL_FROM_NAME= Account_confirmation (правильно)
В моем случае у меня была лишняя строка, которой не должно быть.
Header set X-Frame-Options SAMEORIGIN
Удалено это, и ЭТО РАБОТАЕТ
На случай, если кто-то еще сюда попадет и не решил свою проблему. Я столкнулся с этой проблемой и обнаружил, что это связано с использованием дефиса для разделения имени переменной среды.
NOM-OPEN="2020/01/24"
Это было нормально до Laravel 5.7, но упало до 5.8. Чтобы решить эту проблему, замените дефис на подчеркивание.
NOM_OPEN="2020/01/24"
Не забудьте обновить все ссылки на переменную!