Mac OS Snow Leopard:为什么我的mysql.default_socket值在我的phpinfo()页面中没有改变?

每次尝试在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