我正在使用PHP 5.3.10在Docker下运行Symfony命令。当我到达一条线,就像
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从…
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();
}
}它执行prepareData函数。'after getContainer‘永远不会回响,而只是“getContainer之前”。日志中没有任何内容,Apache、MySQL或Symfony。
您是否知道如何调试这个或如何使容器像它发生在Docker之外一样?
更新
我现在已经用phpbrew测试过了。它适用于PHP5.6.30版本,但不适用于所需的PHP5.3.10版本(停止在上面相同的$em = $this->getContainer行)。奇怪的是,它在PHP7.0.3中也不起作用。对于PHP版本来说,这是一个与Symfony或Doctrine相关的问题吗?
发布于 2017-08-09 10:01:55
我尝试了一些其他的Symfony CLI命令,并注意到在Doctrine的供应商存储库中(通过composer安装)有时会出现致命错误。检查时,使用PHP5.4语法初始化数组(方括号)。因此,这当然不能在5.3容器中工作。因此,我降低了doctrine/cache、doctrine/common和doctrine/orm的级别,命令现在运行。
https://stackoverflow.com/questions/45298083
复制相似问题