1

我在命令行中的相对目录遇到了一些麻烦。

我创建了一个命令(php app/console generate:command)。使用此命令,我需要删除项目的“web/myFolder”目录中的一些文件。

protected function execute(InputInterface $input, OutputInterface $output)
    {     
        //$directorio = 'myFolder'; /*Do not work*/           
        $directorio = '\XAMPP\htdocs\MiProject\web\myFolder';
        $files  = scandir($directorio);

        foreach($files as $f){ /*do something*/ }
}

从命令中,我必须从 D:/ 编写完整的目录,所以我没有 symfony 项目的相对目录,就像我在任何控制器中所做的那样。有没有使用项目文件夹中的相对目录的解决方案?

使用非相对目录,我应该在将项目放在生产服务器上时替换此目录。所以我应该在测试和生产环境之间多次改变它。

非常感谢。

4

1 回答 1

2

您可以使用kernel.root_dir通常指向 AppKernel 文件所在目录的预定义参数 ( <project_root>/app)。

所以只需访问位于容器中的参数,例如

// From controller
$this->getParameters('kernel.root_dir');

或更一般地说:

// from service/command
$this->container->getParameters('kernel.root_dir');

所以在你的情况下应该是:

$directorio = $this->getContainer()->getParameter('kernel.root_dir').'/../‌​web/myFolder';

本文中的一些信息。

希望这有帮助

于 2017-10-16T09:14:31.900 回答