在PHP Docker容器/phpbrew for PHP5.3.10中获取Symfony条令实体管理器
我正试图用PHP5.3.10在Docker下运行Symfony命令。当我排到这样一行时在PHP Docker容器/phpbrew for PHP5.3.10中获取Symfony条令实体管理器,php,mysql,symfony,doctrine-orm,phpbrew,Php,Mysql,Symfony,Doctrine Orm,Phpbrew,我正试图用PHP5.3.10在Docker下运行Symfony命令。当我排到这样一行时 class Data{ public function prepareData(){ echo 'before getContainer'; $em = $this->getContainer()->get('doctrine.orm.entity_manager')->getConnection(); echo 'after get
class Data{
public function prepareData(){
echo 'before getContainer';
$em = $this->getContainer()->get('doctrine.orm.entity_manager')->getConnection();
echo 'after getContainer';
}
}
它默默地失败了
用于设置容器的docker命令为
docker run --network="host" -t -i -p 80:80 -v /srv/www/live/:/srv/www/live/ -v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock bylexus/apache-php53 /bin/bash
在Docker容器中安装mysql,然后可以登录并查看本地系统上存在的数据库
我在Docker容器中运行的Symfony命令如下
php app/console mytask:preparedata
从
它执行prepareData
功能。“after-getContainer”从不回显,只回显“before-getContainer”。日志中没有任何内容,Apache、MySQL或Symfony
您知道如何调试它,或者如何使容器像发生在Docker外部一样运行吗
更新
我现在已经用phpbrew测试了这个。它可以在PHP版本5.6.30上工作,但不能在所需的PHP版本5.3.10上工作(停止在与上面相同的
$em=$this->getContainer
行)。奇怪的是,它在phpbrew中的PHP7.0.3上也不起作用。就PHP版本而言,这可能是Symfony或条令相关的问题吗?我尝试了其他一些Symfony CLI命令,并注意到有时条令的供应商存储库(通过composer安装)中会出现致命错误。经检查,这里是使用PHP5.4语法(方括号)初始化数组的地方。当然,这在5.3的容器中是行不通的。因此,我降级了条令/cache
、条令/common
和条令/orm
,命令现在正在运行。我尝试了一些其他Symfony CLI命令,并注意到有时条令的供应商存储库中会出现致命错误,这些错误是通过composer安装的。经检查,这里是使用PHP5.4语法(方括号)初始化数组的地方。当然,这在5.3的容器中是行不通的。因此我降级了条令/cache
,条令/common
和条令/orm
,命令现在运行
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
class PrepareDataCommand extends Command
{
protected function configure()
{
parent::configure();
$this->setName('mytask:preparedata');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->getHelper('Data')->prepareData();
}
}