提问者:小点点

通过docker exec或PhpStorm执行时,控制台PHP脚本的运行方式不同


我试图通过PhpStorm运行控制台运行教义2的控制台脚本。Docker设置为部署服务器。

如果我运行这个:

$docker execcontainer_name /var/www/vendor/bin/doctrine-moduleorm:模式工具:创建

它打印:

没有要处理的元数据类。

但是当我在PhpStorm:File:/home/username/PhpstormProjects/proj/vendor/bin/doctor模块中运行PHP运行/调试配置时

它打印:

docker://image_name/container_name/var/www/vendor/bin/doctrine模块

致命错误:未捕获PDO异常: PDO::__construct():php_network_getaddresses: getaddrinfo失败:名称或服务不知道 /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php行765

Zend\ServiceManager\Exception\ServiceNotCreateException:无法创建名为“条令.连接.orm_默认值”的服务。原因:驱动程序SQLSTATE[HY000][2002]php\u network\u getaddresses:getaddrinfo失败:名称或服务在/var/www/vendor/zendframework/zend servicemanager/src/servicemanager中未知。php在线765

调用堆栈:0.0001 349368 1。{main}() /var/www/vendor/doctrine/doctrine-module/bin/doctrine-module:0 0.0268 360480 2。包括('/var/www/供应商/学说/学说-模块/bin/doctrine-module.php') /var/www/vendor/doctrine/doctrine-module/bin/doctrine-module:4 0.9376 4076096 3。Zend\ServiceManager\ServiceManager-

进程完成,退出代码255

我检查了当PDO创建时,它接收绝对相同的参数

newpdo(“mysql:host=db;port=3306;dbname=dbname”、“user”、“pass”、[]))

docker撰写。yml:

version: '2'
services:
    nginx:
        container_name: nginx
        build:
            context: .
            dockerfile: DockerfileNginx
        ports:
            - "80:80"
        depends_on:
            - php
        working_dir: /var/www
        links:
            - php
        volumes:
            - .:/var/www
        links:
            - db
    php:
        container_name: php
        build:
            context: .
            dockerfile: DockerfilePhp
            - db
        volumes:
            - .:/var/www
        expose:
            - "9000"
        depends_on:
            - db
    db:
        container_name: db
        image: "mysql:5.6"
        ports:
            - "3306:3306"
        environment:
            MYSQL_ROOT_PASSWORD: pass
            MYSQL_DATABASE: dbname
            MYSQL_USER: user
            MYSQL_PASSWORD: pass

共1个答案

匿名用户

我也遇到了同样的问题,我发现PHPStorm为您的PHP调用启动了一个新的专用Docker容器。因此,此时缺少所有docker compose配置。

我做了以下工作:

  • 使用compose启动Docker堆栈
  • 之后,使用docker network ls查找您的网络名称(请参阅无法链接到docker compose启动的正在运行的容器以获取帮助)
  • 在PHPStorm内转到Docker容器的首选项(语言)