我尝试在我的 Mac 上配置 Wordpress。我使用带有 MySQL 的 Apache 服务器,通过 MacPorts 安装。
因此,在 phpMyAdmin 中,我创建了一个带有“hellowp”数据库的“hellowp”用户。我可以使用该用户正确登录,并且可以访问 hellowp 数据库。
但是当我在 wp-config.php 中或从 Wordpress 配置 GUI 中设置这些参数时,Wordpress 无法登录数据库。
我启用了调试,这是我得到的错误:
Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/var/www/hellowp/wp-includes/wp-db.php on line 1342
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /private/var/www/hellowp/wp-includes/wp-db.php on line 1372
Warning: mysql_connect(): No such file or directory in /private/var/www/hellowp/wp-includes/wp-db.php on line 1372
我的 PHP 版本是 5.5.10。我将此服务器用于许多项目,因为有些项目在 Drupal 上运行,我对它们没有任何问题。
我也尝试在 Wordpress 中以 MySQL root 用户身份登录,但错误仍然存在。
编辑 1: 我尝试从 MySQL Workbench 和 SURPRISE 登录我的服务器,在 127.0.0.1 找不到服务器...奇怪的是 phpMyAdmin 仍在工作,其他项目和Drupal 使用数据库没有任何问题。我将对此进行调查,也许是防火墙问题。当我有消息时会更新。
编辑 2: 好的,所以我检查了你们中的许多人所说的,是的,你们中的许多人是对的:来自 PHP 的 MySQL 连接仅在使用 PDO 时有效(我在所有我的项目和 Drupal 做的)。 mysql_connect 和 mysqli_connect 触发错误。 但事实是我不会重写 Wordpress,而且我使用的是最新版本。因此,我将尝试找到一种解决方案,使 mysql_connect 和 mysqli_connect 在我的 PHP 配置上正常工作。
**编辑 3:解决方案:** 几个月前我安装了 Percona 服务器(一个 MySQL 分支)来替换 mysql 服务器。在这个安装过程中,在我的 php.ini 中,我只为 PDO 设置了套接字,而不是为 mysqli 和 mysql。因此,我必须在我的 php.ini 中为所有 mysql 扩展设置套接字。这是那些行:
pdo_mysql.default_socket="/opt/local/var/run/percona/mysqld.sock"
mysql.default_socket = "/opt/local/var/run/percona/mysqld.sock"
mysqli.default_socket = "/opt/local/var/run/percona/mysqld.sock"
最佳答案
第一条错误消息告诉您 Wordpress 找不到您的数据库,很可能是您的主机名不正确 - 它通常是“本地主机”,但您可以尝试 127.0.0.1,我认为这更适合 Mac。
其余的错误消息具有误导性——如果 wordpress 无法建立 Mysqli 连接,它将尝试已弃用的 mysql,在您的情况下,也会失败,因为它找不到数据库。
关于php - MacPorts Apache : PDO works but mysql_connect and mysqi_connect does not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449377/