1

在我的自定义服务器上使用 Openshift origin 3.9。到目前为止,这是一次愉快的经历。我一直在为我的 LEMP 堆栈构建基于 Ubuntu的自定义 s2i 映像。

我无法连接到 MySQL 数据库。我总是收到一条错误消息:

无法连接到 MySQL:(2002)没有这样的文件或目录

这是我的 PHP 代码:

$mysql_database = getenv("MYSQL_DATABASE");
$mysql_server_name =getenv("MYSQL_HOST");
$mysql_username = getenv("MYSQL_USER");
$mysql_password = getenv("MYSQL_PASSWORD");
$mysql_port = getenv("MYSQL_PORT");
$mysqli = new mysqli($mysql_server_name, $mysql_username, $mysql_password, $mysql_database, $mysql_port);
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    die();
}

一些观察:

我可以从 pod 内部从 MySQL CLI 客户端进行连接。

在此处输入图像描述

相同的应用程序/代码适用于官方的 openshift PHP s2i 映像。

我在我的 s2i 中遗漏了什么吗?

4

1 回答 1

0

检查您的 phpinfo() 并搜索 MySQLi 扩展。如果找不到,则表示您尚未安装扩展程序,需要安装它。

尝试从终端安装

(Ubuntu/Mint) $ sudo apt-get install php(version)-mysql

将 (version) 替换为您的任何 php 版本号。比如php7.0/php7.1等。

要检查 phpinfo(),请创建一个 phpinfo.php 文件,您可以从 url 访问该文件的内容

<?php
phpinfo()

如果您拥有一切但仍然无法连接?尝试检查您的 mysql.sock 文件路径。

打开 php.ini 文件并找到这一行:

mysql.default_socket

并制作它(知道你的 mysql.sock 的位置)

mysql.default_socket = /path/to/mysql.sock

于 2018-08-04T04:58:46.033 回答