2017-12-06 13 views
1

Ich versuche, ein Symfony 4-Projekt in meinem Server zu implementieren, aber ich habe Probleme, es Produktion zu erstellen (in lokalen es funktioniert perfekt).Symfony 4 Bereitstellung funktioniert nicht

Früher habe ich viel von symfony 3 Projekten in meinem Server bereitgestellt, so habe ich beschlossen, eine Symfony zu testen 4.

Dies ist der Fehler, den ich in meinem Log bekommen:

[Wed Dec 06 10:26:33.141952 2017] [:error] [pid 13485] [client 84.120.210.249:50394] 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 /var/www/my_project/vendor/symfony/dotenv/Dotenv.php:95\nStack trace:\n#0 /var/www/my_project/vendor/symfony/dotenv/Dotenv.php(57): Symfony\Component\Dotenv\Dotenv->populate(Array)\n#1 /var/www/my_project/public/index.php(15): Symfony\Component\Dotenv\Dotenv->load('/var/www/rodage...')\n#2 {main}\n thrown in /var/www/my_project/vendor/symfony/dotenv/Dotenv.php on line 95

Das ist meine index.php (Standard index.php, die Sie erhalten, wenn Sie ein Projekt erstellen):

<?php 

use App\Kernel; 
use Symfony\Component\Debug\Debug; 
use Symfony\Component\Dotenv\Dotenv; 
use Symfony\Component\HttpFoundation\Request; 

require __DIR__.'/../vendor/autoload.php'; 

// The check is to ensure we don't use .env in production 
if (!isset($_SERVER['APP_ENV'])) { 
    if (!class_exists(Dotenv::class)) { 
     throw new \RuntimeException('APP_ENV environment variable is not defined. You need to define environment variables for configuration or add "symfony/dotenv" as a Composer dependency to load variables from a .env file.'); 
    } 
    (new Dotenv())->load(__DIR__.'/../.env'); 
} 

if ($_SERVER['APP_DEBUG'] ?? ('prod' !== ($_SERVER['APP_ENV'] ?? 'dev'))) { 
    umask(0000); 

    Debug::enable(); 
} 

if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) { 
    Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL^Request::HEADER_X_FORWARDED_HOST); 
} 

if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) { 
    Request::setTrustedHosts(explode(',', $trustedHosts)); 
} 

$kernel = new Kernel($_SERVER['APP_ENV'] ?? 'dev', $_SERVER['APP_DEBUG'] ?? ('prod' !== ($_SERVER['APP_ENV'] ?? 'dev'))); 
$request = Request::createFromGlobals(); 
$response = $kernel->handle($request); 
$response->send(); 
$kernel->terminate($request, $response); 

Dies ist, was ich in meinem composer.json haben:

"require": { 
    "php": "^7.1.3", 
    "symfony/asset": "^4.0", 
    "symfony/console": "^4.0", 
    "symfony/dotenv": "^4.0", 
    "symfony/flex": "^1.0", 
    "symfony/framework-bundle": "^4.0", 
    "symfony/lts": "^[email protected]", 
    "symfony/twig-bundle": "^4.0", 
    "symfony/web-server-bundle": "^4.0", 
    "symfony/yaml": "^4.0" 
}, 

Dies sind die Dinge, die ich versucht:

-cache: klar

-composer Update

-apache neu starten

Ich denke, dass es etwas über Umgebungsvariablen, aber nicht wirklich sicher ...

Irgendwelche Vorschläge?

Vielen Dank für Ihre Zeit!

Antwort

0

Void Returns sind nur ab PHP 7.1 verfügbar. Meine Vermutung ist, dass Sie eine frühere Version von PHP verwenden.

Look at this answer

+0

php -v: PHP 7.1.12-1 + ubuntu16.04.1 deb.sury.org + + 1 (cli) (gebaut: Nov 29 2017 10.03.25) (NTS) Nach dem Bearbeiten meiner composer.json mit dotenv 3.4 habe ich einen neuen Fehler ... PHP Schwerwiegender Fehler: Der Standardwert für Parameter mit einem Klassentyp kann nur NULL sein in/var/www/my_project/vendor/symfony/config/ResourceCheckerConfigCache.php Es gibt keinen Sinn für diese Art von Fehlern. In localhost funktioniert meine App perfekt –

Verwandte Themen