소스 검색

Update symfony configuration

https://symfony.com/doc/current/configuration/dot-env-changes.html
Julio Montoya 5 년 전
부모
커밋
34b84cced9
7개의 변경된 파일39개의 추가작업 그리고 28개의 파일을 삭제
  1. 0 0
      .env
  2. 4 0
      .env.test
  3. 3 1
      .gitignore
  4. 1 1
      .htaccess
  5. 21 0
      config/bootstrap.php
  6. 4 4
      main/install/index.php
  7. 6 22
      public/index.php

+ 0 - 0
.env.dist → .env


+ 4 - 0
.env.test

@@ -0,0 +1,4 @@
+# define your env variables for the test env here
+KERNEL_CLASS='App\Kernel'
+APP_SECRET='s$cretf0rt3st'
+SYMFONY_DEPRECATIONS_HELPER=999999

+ 3 - 1
.gitignore

@@ -55,7 +55,9 @@ composer.lock
 symfony.lock
 
 ###> symfony/framework-bundle ###
-.env
+/.env.local
+/.env.local.php
+/.env.*.local
 /public/bundles/
 /var/
 /vendor

+ 1 - 1
.htaccess

@@ -74,7 +74,7 @@ RewriteRule ^service/(\d{1,})$ plugin/buycourses/src/service_information.php?ser
 RewriteRule ^lti/os$ public/lti/os [L]
 
 # Deny access
-RewriteRule ^(tests|.git|.env|.env.dist|config) - [F,L,NC]
+RewriteRule ^(tests|.git|.env|.env.dist|.env.local|config) - [F,L,NC]
 
 # Add caching of woff font files to avoid loading 2*15KB each time with Chamilo
 # default OpenSans font

+ 21 - 0
config/bootstrap.php

@@ -0,0 +1,21 @@
+<?php
+
+use Symfony\Component\Dotenv\Dotenv;
+
+require dirname(__DIR__).'/vendor/autoload.php';
+
+// Load cached env vars if the .env.local.php file exists
+// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
+if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) {
+    $_SERVER += $env;
+    $_ENV += $env;
+} elseif (!class_exists(Dotenv::class)) {
+    throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
+} else {
+    // load all the .env files
+    (new Dotenv())->loadEnv(dirname(__DIR__).'/.env');
+}
+
+$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
+$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
+$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';

+ 4 - 4
main/install/index.php

@@ -590,8 +590,8 @@ if (@$_POST['step2']) {
         migrateSwitch($my_old_version, $manager);
 
         // Create .env file
-        $envFile = api_get_path(SYS_PATH).'.env';
-        $distFile = api_get_path(SYS_PATH).'.env.dist';
+        $envFile = api_get_path(SYS_PATH).'.env.local';
+        $distFile = api_get_path(SYS_PATH).'.env';
 
         $params = [
             '{{DATABASE_HOST}}' => $dbHostForm,
@@ -654,8 +654,8 @@ if (@$_POST['step2']) {
 
         $manager = $database->getManager();
         // Create .env file
-        $envFile = api_get_path(SYS_PATH).'.env';
-        $distFile = api_get_path(SYS_PATH).'.env.dist';
+        $envFile = api_get_path(SYS_PATH).'.env.local';
+        $distFile = api_get_path(SYS_PATH).'.env';
 
         $params = [
             '{{DATABASE_HOST}}' => $dbHostForm,

+ 6 - 22
public/index.php

@@ -3,39 +3,23 @@
 
 use Chamilo\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');
-}
-
-$env = $_SERVER['APP_ENV'] ?? 'dev';
-$debug = $_SERVER['APP_DEBUG'] ?? ('prod' !== $env);
-
-if ($debug) {
+require dirname(__DIR__).'/config/bootstrap.php';
+if ($_SERVER['APP_DEBUG']) {
     umask(0000);
-
     Debug::enable();
 }
-
-if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
+if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['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));
+if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
+    Request::setTrustedHosts([$trustedHosts]);
 }
 
 require_once __DIR__.'/legacy.php';
 
-$kernel = new Kernel($env, $debug);
+$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
 //$request = Request::createFromGlobals();
 $request = Sonata\PageBundle\Request\RequestFactory::createFromGlobals(
     'host_with_path_by_locale'