Чтобы ответить на вопрос, который имел @croca, подробно расскажу о том, что разместил @Francesc Rosàs, и, как предложил @Problematic.
Если вы посмотрите в приложение / консоль, вы должны увидеть $env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
Все, что это делает, проверяет входные аргументы, передаваемые на консоль для --env
или -e
, проверяет значение по умолчанию с getenv('SYMFONY_ENV')
или устанавливает его на dev
, если ни один из них не предоставляется.
Затем передается $kernel = new AppKernel($env, $debug);
По сути, вы можете либо внести изменения непосредственно в приложение / консоль, чтобы реализовать специфические функции вашего приложения, либо скопировать приложение / консоль в отдельный файл, такой как приложение / exec, а затем обработать переменную $ env, как вы предпочитаете определять нужную среду.
Простой пример: app / exec
#!/usr/bin/env php
<?php
/**
* disabled debug mode,
* set environment based on requesting address being local
* otherwise the server's IP address
* be sure to perform at least chmod(750) on the file to ensure it is executable
* otherwise it must be prefixed with your php executable
*/
set_time_limit(0);
require_once __DIR__.'/bootstrap.php.cache';
require_once __DIR__.'/AppKernel.php';
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
$input = new ArgvInput();
$env = ($_SERVER['REMOTE_ADDR'] === '127.0.0.1' || $_SERVER['REMOTE_ADDR'] === '::1' ? 'dev' :
($_SERVER['SERVER_ADDR'] === '192.168.2.1' ? 'test' : 'prod')
);
$kernel = new AppKernel($env, false);
$application = new Application($kernel);
$application->run($input);
Тогда звоните php app/exec namespace:command arguments --flags
Кроме того, вы можете обработать свое собственное приложение вместо использования AppKernel app / console - инструкции от Symfony можно найти здесь: http://symfony.com/doc/current/components/console/introduction.html