Dotenv和void类的Symfony 4.1错误

时间:2018-07-14 18:27:42

标签: php symfony4

大家好,我在symfony 4.1下,并且遇到了这个错误

Fatal error: Uncaught TypeError: Return value of 
Symfony\Component\Dotenv\Dotenv::populate() must be an instance of 
Symfony\Component\Dotenv\void, none returned in 
/var/www/mailx/vendor/symfony/dotenv/Dotenv.php:95 Stack trace: #0 
/var/www/mailx/vendor/symfony/dotenv/Dotenv.php(57): 
Symfony\Component\Dotenv\Dotenv->populate(Array) #1 
/var/www/mailx/public/index.php(15): Symfony\Component\Dotenv\Dotenv- 
>load('/var/www/mailx/...') #2 {main} thrown in 
/var/www/mailx/vendor/symfony/dotenv/Dotenv.php on line 95

在尝试打开主页时会发生这种情况,这是我的配置:

PHP 7.2.7-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jun 22 2018 08:44:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.7-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

我的项目中没有多余的代码,它是新的Symfony

2 个答案:

答案 0 :(得分:2)

看起来它可能与PHP版本有关。在Github上查看相关的issue

一些可能的原因/解决方法:

  1. 取决于安装dotenv的方式(请参见docs),您可能需要摆脱供应商文件夹并运行全新的作曲家安装程序
  2. 降级到PHP 7.0作为7.1中引入的返回类型,因此会出现错误(显然不是长期解决方案)

答案 1 :(得分:0)

好吧,对于symfony 4.1,我真的不知道,但是我将symfony降级到3.4并面临相同的问题,解决方案是在配置文件中设置mysql版本。

config.yaml

doctrine:
    dbal:
        ...
        server_version: "%database_server_version%"

parameters.yaml

parameters:
    ...
    database_server_version: 5.7