我在试着设置WordPress。我已经运行了Apache和MySQL,帐户和数据库也都设置好了。我试着建立一个简单的连接:
<?php
$conn = mysql_connect('localhost', 'USER', 'PASSWORD');
if(!$conn) {
echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
}
?>
我总是得到这样的信息:
错误: 2002 -没有这样的文件或目录
它可能指的是什么文件或目录?
我使用的是OS Leopard,使用的是内置的Apache。我使用x86_64 dmg安装了MySQL。
更新:我发现套接字在/tmp/mysql.sock,所以在php.ini中,我用它替换了所有出现错误路径的地方。
发布于 2009-11-05 05:28:41
如果您使用Linux: mysql.sock文件的路径是错误的。这通常是因为您使用的是(LAMPP) XAMPP,而它不在/tmp/mysql.sock中
打开php.ini文件并找到以下行:
mysql.default_socket
并让它成为
mysql.default_socket = /path/to/mysql.sock
发布于 2011-08-06 00:39:04
我也遇到过类似的问题,并通过使用127.0.0.1
而不是localhost
来解决我的mysql。
这可能意味着我的主机设置中出现了一些错误,但这个快速修复方法正是我现在要做的。
发布于 2013-03-10 02:58:26
这是针对Apache 的,带有原生安装的 HTTP和自定义安装的MySQL。
答案是基于@alec-gorge的出色响应,但由于我必须在google上搜索一些特定的更改才能在我的配置中对其进行配置,主要是特定于Mac OS X的配置,为了完整性,我认为我应该在这里添加它。
启用对Apache HTTP的PHP5支持
确保在/etc/apache2/httpd.conf
中启用了PHP5支持。
使用sudo vi /etc/apache2/httpd.conf
编辑文件(要求输入密码),并取消注释(从开头删除;
)以加载php5_module模块。
LoadModule php5_module libexec/apache2/libphp5.so
使用sudo apachectl start
启动Apache HTTP (如果Apache HTTP已经启动,需要重新启动它才能重新读取配置文件,则使用restart
启动)。
确保/var/log/apache2/error_log
包含一行告诉您php5_module已启用的行-您应该看到PHP/5.3.15
(或类似的内容)。
[notice] Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch configured -- resuming normal operations
查找套接字文件的名称
当MySQL启动并运行(使用./bin/mysqld_safe
)时,控制台上应该打印出调试行,告诉您在哪里可以找到日志文件。请注意文件名中的主机名-在我的示例中为localhost
-根据您的配置可能会有所不同。
Logging to
之后的文件很重要。这就是MySQL记录其工作的地方。
130309 12:17:59 mysqld_safe Logging to '/Users/jacek/apps/mysql/data/localhost.err'.
130309 12:17:59 mysqld_safe Starting mysqld daemon with databases from /Users/jacek/apps/mysql/data
打开localhost.err
文件(同样,您的文件的名称可能会有所不同),例如tail -1 /Users/jacek/apps/mysql/data/localhost.err
,以查找套接字文件的名称-它应该是最后一行。
$ tail -1 /Users/jacek/apps/mysql/data/localhost.err
Version: '5.5.27' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL)
注意socket:
部分--这是您应该在php.ini
中使用的套接字文件。
还有另一种方法(有人说是一种更简单的方法)可以通过登录到MySQL并运行以下命令来确定套接字文件名的位置:
show variables like '%socket%';
使用MySQL支持配置PHP5 - /etc/php.ini
说到php.ini。
在/etc
目录下有一个/etc/php.ini.default文件。将其复制到/etc/php.ini.
sudo cp /etc/php.ini.default /etc/php.ini
打开/etc/php.ini
并查找mysql.default_socket.
sudo vi /etc/php.ini
mysql.default_socket
的默认值为/var/mysql/mysql.sock
。您应该将其更改为前面提到的值-在我的示例中是/tmp/mysql.sock
。
替换/etc/php.ini
文件以反映套接字文件的名称:
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
最终验证
重新启动Apache HTTP。
sudo apachectl restart
如果没有与PHP5相关的错误,请检查日志。没有错误意味着您已经完成了,使用MySQL的PHP5应该可以很好地工作。恭喜!
https://stackoverflow.com/questions/1676688
复制相似问题