Laravel 5.8,artisan命令错误:由于名称无效,无法解析dotenv文件

时间:2019-03-13 17:55:44

标签: shared-hosting artisan 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之后也变成了白色的空白页面!

11 个答案:

答案 0 :(得分:4)

这是与解析.env文件有关的一般错误。 您会看到此错误指示,例如

The environment file is invalid!
Failed to parse dotenv file due to unexpected whitespace. 
Failed at [This will fail].

在此示例中,这是由于在APP_NAME字段中未转义空白引起的,即

APP_NAME=This will fail

要解决此问题,请用引号引起来,例如

APP_NAME="This is better"

答案 1 :(得分:4)

这是我们更改应用名称时的一般错误。要删除此错误,只需执行此操作。

APP_NAME=My Project Name 

对此

APP_NAME="My Project Name"

您只需要在名称周围添加“”课程即可。 谢谢

答案 2 :(得分:2)

我最近在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}"

答案 3 :(得分:2)

我更改了.env的编码,并解决了该问题。

没有BOM的UFT-8

谢谢

答案 4 :(得分:0)

从Laravel 5.5升级到Laravel 5.8时,我收到类似的错误消息。

  

环境文件无效!由于出现以下原因,无法解析dotenv文件:   名称无效。在[// APP_ENV]失败。

5.5将接受APP_ENV上的C样式注释:

// 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?

答案 5 :(得分:0)

我遇到了完全相同的问题,但解决方案不同。 CRLF没有影响。

这让我发疯,我读到某个地方不再支持C样式注释。我的env文件不包含任何文件,但无奈之下,我在文件顶部添加了以下行:

# getting tiresome.

我认为措辞并不重要,但关键是要发表评论。

之后,它起作用了。我不知道为什么,但是确实如此。

答案 6 :(得分:0)

MAIL_FROM_NAME =帐户确认

我只是在两个词之间留出空格 只是尝试避免这样:Account_confirmation

MAIL_FROM_NAME =帐户确认(正确)

答案 7 :(得分:0)

就我而言,我有多余的一行不应该出现。

Header set X-Frame-Options SAMEORIGIN删除了此内容,并已解决

答案 8 :(得分:0)

我发现如果您在 .env 文件中用引号声明 APP_NAME,它将允许应用程序名称中包含空格,但请确保您使用命令 (php artisan serve) 重新启动服务器 例如:APP_NAME='Laravel Login'

这对我有用。

答案 9 :(得分:-1)

我找到了这个问题的原因。

这是因为 .env文件中的行分隔符

必须为 CRLF 而不是LF

我的.env文件是LF

see the screenshot to understand the solution

答案 10 :(得分:-1)

万一其他人到达这里并没有解决他们的问题。我遇到了这个问题,发现这是由于使用连字符来分隔环境变量名称。

NOM-OPEN="2020/01/24"

这对Laravel 5.7来说还可以,但跌至5.8。要解决此问题,请将连字符更改为下划线。

NOM_OPEN="2020/01/24"

别忘了更新对变量的所有引用!