簡體   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