ronisaha
2/17/2015 - 6:39 AM

Symfony2 Console from anywhere in project directory

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);