为啥我不能在我的 docker 容器中运行 phpinfo()?

Posted

技术标签:

【中文标题】为啥我不能在我的 docker 容器中运行 phpinfo()?【英文标题】:Why can't I run phpinfo() in my docker container?为什么我不能在我的 docker 容器中运行 phpinfo()? 【发布时间】:2020-05-31 18:39:10 【问题描述】:

我正在尝试在我的 php-fpm docker 容器和 RDS Postregsql 之间建立连接。我发现我的 php 应用程序“调用未定义函数 pg_connect()”中出现错误。所以我认为问题可能是我的 php.ini 中没有启用 pgsql 驱动程序。所以我尝试启用它,首先在我的 Dockerfile 中添加一行,重建图像,然后我关闭容器并再次启动它。但是我得到了同样的错误“调用未定义的函数 pg_connect()。所以我想在容器中运行 phpinfo() 以查看是否加载了 pgsql 驱动程序。我尝试使用 docker exec 4822 /bin 运行它/bash 为容器打开一个 cli,但主机 cli 只是返回一个 $。我如何在容器中运行 phpinfo(),以便找出为什么 $DB2 = $this->load->database(' postgres', TRUE) 是否因上述错误而失败?我正在使用 Codeigniter,这是连接数组:

enter code here

enter code here

抱歉,我无法让格式正常运行。无论如何,这是dsn 'dsn' => 'jdbc:postgresql://imagesdatabase.cwymdn16cxes.us-east-1.rds.amazonaws.com:5432/postgres'

【问题讨论】:

【参考方案1】:

从 $ 提示符:

php

应该启动 PHP 进程。那么:

<?php phpinfo();

将显示 phpinfo() 输出。您需要使用 Control-D 结束 php 进程,然后应显示所有输出。

【讨论】:

我还是有问题。我不明白的是为什么我们认为输入 php -a 会在容器内而不是在主机上运行交互式 php? 对于那些仍然想知道的人:运行docker exec -it php sh,其中php 是您的php 容器,然后您可以在收到提示后执行php &lt;?php phpinfo(); 。或者,如果使用 docker 桌面,单击容器的 &gt;_ CLI 按钮,您将在容器内看到提示。【参考方案2】:

关注https://www.php.net/manual/en/features.commandline.interactive.php

这将帮助你,如何使用interactive command line PHP

如果DockerImage 基于PHP 或在docker container 中有PHP installed,那么您可以使用此功能。您需要在docker terminal 中执行以下命令

$ php -a
Interactive shell

php > echo 5+8;
13

【讨论】:

我试图在 php_fpm 容器中运行它。原来我需要在 Apache Container 中运行它。谢谢【参考方案3】:

好吧,我终于意识到,既然我正在开发的是 php,为什么不将 phpinfo() 插入到启动中。我这样做了,效果很好!所有这些努力只是为了确认 pgsql 驱动程序没有被加载!按照这个速度,我将用余生来完成我的申请?。

【讨论】:

以上是关于为啥我不能在我的 docker 容器中运行 phpinfo()?的主要内容,如果未能解决你的问题,请参考以下文章

为啥部署 django docker 容器后,邮件发送失败?

为什么我的作曲家依赖项没有在docker容器中找到但是本机在我的mac上?

为啥我ping不通我的docker容器

为啥 PHP docker 容器无法查找 MYSQL 容器的主机名?

为啥我的 Java 进程在 docker 容器与主机之间消耗两倍的内存

如何在 docker 容器中禁用核心文件转储