У нас есть три сервера разработки (dev1, dev2, stage)
и один рабочий сервер и несколько проектов Symfony.
Мы хотели бы изменить среду автоматически.
В настоящее время мой хак выглядит так в 'public / index.php'
use App\Kernel;
use Symfony\Component\Debug\Debug;
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\HttpFoundation\Request;
require __DIR__.'/../vendor/autoload.php';
//----------- hack start ------------
$_SERVER['APP_ENV'] = 'prod';
$_SERVER['APP_DEBUG'] = 0;
$_SERVER['APP_SECRET'] = '67d829bf61dc5f87a73fd814e2c9f629';
$localIP = getHostByName(getHostName());
if ($localIP === '81.4.552.97') {
$_SERVER['APP_ENV'] = 'dev1';
$_SERVER['APP_DEBUG'] = 1;
$_SERVER['APP_SECRET'] = '67d829bf61dc5f87a73fd814e2c9f629';
}
...
//----------- hack end ------------
// The check is to ensure we don't use .env in production
if (!isset($_SERVER['APP_ENV'])) {
(new Dotenv())->load(__DIR__.'/../.env');
}
if ($_SERVER['APP_DEBUG'] ?? ('prod' !== ($_SERVER['APP_ENV'] ?? 'dev'))) {
umask(0000);
Debug::enable();
}
// Request::setTrustedProxies(['0.0.0.0/0'], Request::HEADER_FORWARDED);
$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);
и у меня есть три новых окружения в 'config / packages / *', включая конфигурацию базы данных и электронной почты.
Это правильный путь? Может быть, некоторые другие также имеют эту проблему. Я только что проверил его под dev1, похоже, он работает.