每次尝试在Mac OS Snow Leopard 10.6.4上本地连接到mySQL时,都会收到错误。 我正在运行MySQL 5.1.46。 我可以使用控制台login。 我正在运行PHP 5.3.2和我的phpinfo()页面正常工作。 所以我运行了PHP,我可以使用控制台和Sequel Prologin到mySQL服务器。
所以我怀疑这是一个套接字问题。 在我的/ etc目录中,我没有php.ini,我有php.ini.default。 所以我去那里,每一个地方我看到“default_socket”我改变它:
/var/mysql/mysql.sock
至:
/tmp/mysql.sock
我在以下位置看到它:
pdo_mysql.default_socket=/tmp/mysql.sock mysql.default_socket = /tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock
而当我去连接到phpMyAdmin,我得到以下错误:无法启动会议没有错误,请检查您的PHP和/或networking服务器日志文件中给出的错误,并正确地configuration您的PHP安装。
而当我看着我的phpinfo()文件,我得到下面的mySQL:
mysql.default_socket /var/mysql/mysql.sock /var/mysql/mysql.sock
我重新启动Apache …哎呀,我重新启动整个计算机。 依然没有。 我知道mySQL正在工作,我知道PHP正在工作,但我不能让他们说话。
任何帮助?
PHP应该寻找一个php.ini文件(而不是php.ini.default)来加载,所以尝试将php.ini.default重命名为php.ini。 请参阅在Snow Leopard上安装Apache / PHP / MySQL 。
如果你不想用mysql或php的configuration设置,那么设置这个黑客:
mkdir / var / mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
这会在PHP正在查找的连接到真正的mysql.sock的位置创build一个别名。
把mysql.sock带到PHP
MySQL和Leopard出现的一个问题是mysql.sock文件的位置。 以前,这个文件的默认位置在/ tmp目录下。 该位置现在已经移到了/ var / mysql目录。 PHP将在那里寻找它。 不幸的是,MySQL的默认位置仍然会把它放在旧的位置。 我们可以通过在/ etc目录下创build一个my.cnfconfiguration文件来解决这个问题。 将具有以下内容的文件保存到/etc/my.cnf:
[client] socket = /var/mysql/mysql.sock
[mysqld] socket = /var/mysql/mysql.sock
在terminal窗口中,键入以下命令以创build袜子文件的目录:
sudo mkdir / var / mysql sudo chown _mysql / var / mysql
资料来源: http : //www.procata.com/blog/archives/2007/10/28/working-with-php-5-in-mac-os-x-105/
根据Vikash的build议,简单地创build带有内容的/etc/my.cnf文件并创build目录并不能解决问题。 mysql.sock仍然生活在/ tmp中,即使这样做并重新启动机器。 我手动将文件从/ tmp移动到/ var / mysql,然后解决了错误。 不过,我有一种感觉,重新启动后问题会重新出现,而且确实如此。 这一次的错误是稍有不同 – 连接被拒绝。 我发现在/ tmp中已经打开了一个新的套接字,而旧的套接字仍然在/ var / mysql中; 该代码试图使用旧的并被拒绝访问。 所以我用Sid的符号链接来解决问题。 我确定当我重新启动时,此修复程序仍然可以工作。 不过,我很想知道是什么导致系统在/ tmp而不是configuration的/ var / mysql中打开新的套接字。
我做了以下解决这个问题(Mac OS X) –
1.)首先去你的Apache webroot( path可从/etc/apache2/httpd.conf – > DocumentRoot )。 对我来说是/ Library / WebServer / Documents /
1.1)在该位置创build一个showphpconfig.php
2.)去浏览你的浏览器中的这个文件: http : //127.0.0.1/showphpconfig.php
这将显示你的Apache服务器正在使用的configuration文件
对我来说,它使用/private/etc/php.ini
我也看到,PHP使用从/var/mysql/mysql.sock的mysql sock文件
3.)我做了一个php.ini文件的副本。 打开它,find所有有mysql.sock的行。
复制这些行并创build一个新的条目,如下所示 –
;pdo_mysql.default_socket=/var/mysql/mysql.sock
pdo_mysql.default_socket=/tmp/mysql.sock
IMP “;” 在第一行的前面,就是注释掉第一行
应该有大约4个这样的线路
现在你已经告诉php,mysql套接字文件实际上存在于/ tmp文件夹中
4.)重新启动你的apache服务器 – apachectl restart
你应该看到wordpressconfiguration屏幕
尝试只是做一个符号链接。 对于我的XAMPP安装这工作:
sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/ /var/mysql
它不一定是与套接字有关的问题。 尝试从简单的PHP脚本连接到MySQL:
<?php error_reporting(E_ALL); mysql_connect('localhost', 'user', 'pass') or die(mysql_error()); echo 'No errors'; ?>
对于你的PHP.inipath,看看phpinfo(); 为“加载的configuration文件”。 它不必位于/etc/php.ini.default