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!
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 –