MacPorts Apache:PDO有效,但mysql_connect和mysqi_connect没有

时间:2014-05-03 20:19:38

标签: php mysql wordpress macos apache

我尝试在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,而且我正在使用最新版本。因此,我将尝试找到一个解决方案,使myql_connect和mysqli_connect在我的PHP配置上工作。

**编辑3:解决方案:** 我几个月前安装了Percona服务器(一个MySQL fork)来替换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"

2 个答案:

答案 0 :(得分:2)

第一条错误消息告诉您Wordpress无法找到您的数据库,很可能是您的主机名不正确 - 它通常是' localhost'但你可以试试127.0.0.1,我认为这对Mac来说更好。

其余的错误消息具有误导性 - 如果wordpress无法建立Mysqli连接,它将尝试弃用的mysql,在您的情况下,也会因为无法找到数据库而失败。

答案 1 :(得分:1)

不确定但这是Id通常如何调试它。

  1. 通过命令行登录db。这确保了它在你的道路上,一切都正常。
  2. 如果可行,这里是我本地开发环境的一部分。

    // ** MySQL设置 - 您可以从您的网站主机获取此信息** // / ** WordPress的数据库名称* / define('DB_NAME','foo');

    / ** MySQL数据库用户名* / define('DB_USER','foo');

    / ** MySQL数据库密码* / define('DB_PASSWORD','foooo');

    / ** MySQL主机名* / define('DB_HOST','127.0.0.1')