新鲜骨架 Symfony 4 应用程序中的致命错误



(我之前曾尝试过问同样的问题,但引用了错误的错误消息;这是正确的版本(:

从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:95n
    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

在索引中.php第 15 行说:

    (new Dotenv())->load(__DIR__.'/../.env');

在 Dotenv 中.php第 95 行是 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 ###

作曲家.json 目录

对我来说,听起来 populate(( 方法应该返回一个类 Symfony\Component\Dotenv\void 的对象,但在骨架中有这样的遗漏听起来很奇怪?

使其工作的正确方法是什么?

事实证明,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

然后骨架应用程序正常工作!

相关内容

最新更新