Как заставить mysql и php работать вместе и не показывать пароль базы данных

запустить контейнер 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, похоже, модуль 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()?


person Bill    schedule 29.11.2015    source источник
comment
см.: security.stackexchange .com/questions/70827/   -  person Mark O'Connor    schedule 29.11.2015
comment
Спасибо @MarkO'Connor, но на этот раз все по-другому. Пароль выставлен на всеобщее обозрение через вызов http phpinfo.   -  person Bill    schedule 30.11.2015
comment
Я хорошо подумал об этом. Страница phpinfo полезна для отладки, но я не могу придумать разумной причины, чтобы потворствовать раскрытию внутреннего состояния производственной системы на общедоступном URL-адресе. Если вы настаиваете на том, чтобы пойти по этому пути, есть другие, более сложные альтернативы, такие как использование распределенного хранилища конфигурации, такого как consul, etcd или zookeeper.   -  person Mark O'Connor    schedule 01.12.2015


Ответы (1)


Я предполагаю, что вы пытаетесь запустить phplist в среде докеров.

Сообщение, которое вы видите (Fatal Error: Mysql is not supported in your PHP, recompile and try again.), представляет собой сообщение об ошибке phplist, жестко закодированное в файлах ./admin/mysql.inc и ./admin/mysqli.inc.

Это сообщение отображается при проверке наличия функций mysql_connect и mysqli_connect. Вы видите это сообщение, потому что функции отсутствуют в вашей среде.

Вы должны выяснить, какой пакет предлагает эту функциональность, и либо установить его в свой образ докера, либо создать новый образ докера с этой поддержкой.

официальный образ докера PHP основан на Debian, который предлагает пакет php5-mysql. Этого нет в образе докера, поэтому вы устанавливаете этот пакет с помощью apt-get, а затем используете docker-php-ext-install, docker-php-ext-configure и docker-php-ext-enable, чтобы включить расширения mysql и mysqli.

person That Brazilian Guy    schedule 10.05.2016