我正在尝试在生产中运行Symfony4应用程序,我收到以下错误:
Uncaught TypeError: Return value of Symfony\\Component\\Dotenv\\Dotenv::populate() must be an instance of Symfony\\Component\\Dotenv\\void, none returned in /var/www/html/vendor/symfony/dotenv/Dotenv.php:95\nStack trace:\n#0 /var/www/html/vendor/symfony/dotenv/Dotenv.php(57): Symfony\\Component\\Dotenv\\Dotenv->populate(Array)\n#1 /var/www/html/public/index.php(12): Symfony\\Component\\Dotenv\\Dotenv->load('/var/www/html/s...')\n#2 {main}\n thrown in /var/www/html/vendor/symfony/dotenv/Dotenv.php on line 95
在本地,该应用程序运行正常。一旦它转向生产,它就会破裂。
知道为什么会这样吗?
答案 0 :(得分:5)
生产是运行PHP5.x还是7.0? void return type is only available/reserved from PHP 7.1,因此它会认为它可能是同一命名空间中的一个类 - 它也不存在。 Symfony 4 requires PHP 7.1.3
答案 1 :(得分:0)
当我尝试在Ubuntu 16.04服务器上运行Symfony 4时,我也遇到了同样的问题。在我的情况下,我从v7.0升级到v7.2后,忘记在Apache服务器中启用新的php版本。我希望以下详细信息可以帮助您检查生产服务器。
运行以下命令以查看哪个php版本处于活动状态。
ls /etc/apache2/mods-enabled/php*
禁用以前安装的php版本。
sudo a2dismod php7.0
启用新安装的php版本。
sudo a2enmod php7.2
别忘了重启Apache服务器。