Symfony2 Console from anywhere in project directory
#!/usr/bin/env php
<?php
function fileLocator($file =null, $maxDepth = 10, $currentDir = ".")
{
if(empty($file)){
return false;
}elseif(file_exists($currentDir . "/$file")){
return $currentDir;
}elseif(--$maxDepth){
return fileLocator($file, $maxDepth, $currentDir . "/..");
}else{
return false;
}
}
$projectDir = fileLocator('app', 10, getcwd());
if($projectDir){
$projectDir = realpath($projectDir);
if(substr($projectDir, -1) != DIRECTORY_SEPARATOR){
$projectDir .= DIRECTORY_SEPARATOR ;
}
$appDir = $projectDir . 'app';
}else {
die('You are not in symfony project');
}
// if you don't want to setup permissions the proper way, just uncomment the following PHP line
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
//umask(0000);
set_time_limit(0);
require_once $appDir.'/bootstrap.php.cache';
require_once $appDir.'/AppKernel.php';
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Debug\Debug;
$input = new ArgvInput();
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
if ($debug) {
Debug::enable();
}
$kernel = new AppKernel($env, $debug);
$application = new Application($kernel);
$application->run($input);