首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在phpbrew容器/phpbrew 5.3.10中获取Symfony Doctrine实体管理器

在phpbrew容器/phpbrew 5.3.10中获取Symfony Doctrine实体管理器
EN

Stack Overflow用户
提问于 2017-07-25 08:38:39
回答 1查看 533关注 0票数 1

我正在使用PHP 5.3.10在Docker下运行Symfony命令。当我到达一条线,就像

代码语言:javascript
复制
class Data{

    public function prepareData(){
        echo 'before getContainer';
        $em = $this->getContainer()->get('doctrine.orm.entity_manager')->getConnection();
        echo 'after getContainer';

    }
}

它无声地失败了。

设置容器的docker命令是

代码语言:javascript
复制
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命令如下

代码语言:javascript
复制
php app/console mytask:preparedata

从…

代码语言:javascript
复制
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相关的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-09 10:01:55

我尝试了一些其他的Symfony CLI命令,并注意到在Doctrine的供应商存储库中(通过composer安装)有时会出现致命错误。检查时,使用PHP5.4语法初始化数组(方括号)。因此,这当然不能在5.3容器中工作。因此,我降低了doctrine/cachedoctrine/commondoctrine/orm的级别,命令现在运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45298083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档