繁体   English   中英

如何让mysql和php一起工作而不显示数据库密码

[英]How to make mysql and php work together and without show the database password

启动mysql容器

$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

连接到 MySQL 并手动创建新数据库

$ docker run -it --link mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

链接数据库并启动php容器

$ docker run -d --link mysql:mysql --name myapp -v "$PWD":/var/www/html -p 80:80 php:5.6-apache

第一个问题:

当访问我的 php 网站: http://localhost/index.php 时,出现以下错误:

Fatal Error: Mysql is not supported in your PHP, recompile and try again.

这是phpinfo页面中显示的configure命令,似乎mysql模块已包含在编译中。

配置命令 './configure' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf .d' '--with-apxs2' '--disable-cgi' '--enable-mysqlnd' '--with-curl' '--with-openssl' '--with-readline' '--with-重新编码''--with-zlib'

官方 php 图像中是否遗漏了任何内容?

第二个问题:

当访问http://localhost/info.php 时,我可以看到 phpinfo 页面。

但它也在会话“环境”中显示数据库密码:

MYSQL_ENV_MYSQL_ROOT_PASSWORD  my-secret-pw

并在会话“PHP变量”中

_ENV["MYSQL_ENV_MYSQL_ROOT_PASSWORD"]     my-secret-pw

那么如何在phpinfo()中隐藏密码呢?

我假设您正在尝试在 docker 环境中运行 phplist。

您看到的消息( Fatal Error: Mysql is not supported in your PHP, recompile and try again.并重Fatal Error: Mysql is not supported in your PHP, recompile and try again. )是./admin/mysql.inc./admin/mysqli.inc文件中硬编码的 phplist 错误消息。

在检查是否存在mysql_connectmysqli_connect函数时会显示此消息。 您看到此消息是因为您的环境中不存在这些功能。

您必须找出提供此功能的软件包,然后将其安装在您的 docker 映像上,或者构建一个具有此支持的新 docker 映像。

官方 PHP docker 镜像基于 Debian,它提供了php5-mysql包。 这在 docker 映像中不存在,因此您使用apt-get安装此包,然后使用docker-php-ext-installdocker-php-ext-configuredocker-php-ext-enable启用mysqlmysqli扩展名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM