(我之前尝试过问同样的问题,但引用了错误的错误消息;这是正确的版本):
在从symfony / skeleton创建新应用程序后,在浏览器中的公共目录中加载会产生内部服务器错误500.
Web服务器错误日志获取如下条目:
[Thu Jan 25 19:26:35.881140 2018] [:error] [pid 26752] [client .....:64137]
PHP Fatal error: Uncaught TypeError: Return value of
Symfony\\Component\\Dotenv\\Dotenv::populate() must be an instance of
Symfony\\Component\\Dotenv\\void, none returned in
...../hellow/vendor/symfony/dotenv/Dotenv.php:95\n
Stack trace:\n#0 ..../hellow/vendor/symfony/dotenv/Dotenv.php(57):
Symfony\\Component\\Dotenv\\Dotenv->populate(Array)\n
#1 ...../hellow/public/index.php(15):
Symfony\\Component\\Dotenv\\Dotenv->load('....')\n
#2 {main}\n thrown in ..../hellow/vendor/symfony/dotenv/Dotenv.php
on line 95
在index.php第15行中说:
(new Dotenv())->load(__DIR__.'/../.env');
在第95行的Dotenv.php中是populate()方法的右括号,没有return语句。
PHP和Symfony的版本:
php --version
PHP 7.2.1-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jan 5 2018 13:54:13) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.2.1-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
php ....hellow/bin/console --version
Symfony 4.0.3 (kernel: src, env: dev, debug: true)
这是.... hellow / .env文件的内容:
$ cat ....hellow/.env
# This file is a "template" of which env vars need to be defined for your application
# Copy this file to .env file for development, create environment variables when deploying to production
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=....
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=localhost,example.com
###< symfony/framework-bundle ###
对我而言,听起来像populate()方法应该返回Symfony \ Component \ Dotenv \ void类的对象,但是在骨架中有这样的遗漏听起来很奇怪吗?
使它运作的正确方法是什么?
答案 0 :(得分:1)
原来apache2仍在使用旧的PHP 7.0,而不是最近安装的php7.2。
php --version显示7.2,这使我有信心运行7.2,直到我在浏览器中检查了phpinfo()的结果。
我必须这样做:
apt install apache2 libapache2-mod-php7.2
a2dismod php7.0
a2enmod php7.2
service apache2 restart
然后骨架应用程序正常工作!