2013-09-23 2 views
3

Est-il possible d'obtenir le chemin d'accès dans une application Symfony Console? Par exemple (en supposant interpréteur PHP en PATH):Comment obtenir le chemin d'exécution d'une application console Symfony?

cd /tmp 
php /home/user/myapplication/app/console.php mycommand 

doit retourner /tmp comme console.php a été lancé à partir /tmp.

+1

Peut-être utiliser 'getcwd()'? – mkjasinski

+0

@mkjasinski Que se passe-t-il si je lance la commande avec 'exec' depuis le contrôleur Symfony (environnement web)? – gremo

Répondre

9

getcwd() fera ce que vous avez besoin. Vous pouvez exécuter app/console à partir de n'importe quel répertoire, et PHP va savoir lequel il est.

J'ai utilisé l'exemple suivant pour vérifier cela.

<?php 

namespace Acme\DemoBundle\Command; 

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; 
use Symfony\Component\Console\Input\InputArgument; 
use Symfony\Component\Console\Input\InputInterface; 
use Symfony\Component\Console\Input\InputOption; 
use Symfony\Component\Console\Output\OutputInterface; 

class DemoCommand extends ContainerAwareCommand 
{ 
    protected function configure() 
    { 
     $this 
      ->setName('demo:cwd') 
      ->setDescription('Get Current Working Directory') 
     ; 
    } 

    protected function execute(InputInterface $input, OutputInterface $output) 
    { 
     $output->writeln(getcwd()); 
    } 
} 
+1

Merci. Est-ce que cela fonctionne lorsque la commande est exécutée à partir d'un contrôleur (page Web, par exemple)? – gremo

+1

Juste fait un test avec le processus Symfony dans une action du contrôleur et cela fonctionne certainement. Avez-vous l'intention d'exécuter votre commande en utilisant 'Symfony \ Component \ Process \ Process'? –

+1

Oui, peut-être exécuter et capturer la sortie, mais pour la première fois il fonctionnera comme une simple application console. Merci beaucoup d'avoir aidé! – gremo

Questions connexes