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}"

Я добавил курс "" по пути DB_DATABASE.

Я обнаружил, что если вы объявите APP_NAME в кавычках в файле .env, это позволит использовать пробелы в имени приложения, но убедитесь, что вы перезапускаете сервер с помощью команды (php artisan serve). Например: APP_NAME='Laravel Login'

Это подходит для меня.

удалить.envфайл и воссоздать другой с тем же содержимым

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"

Не забудьте обновить все ссылки на переменную!

Другие вопросы по тегам