PHP on OSX: Can’t connect to local MySQL server through socket ‘/var/mysql/mysql.sock’
- January 7th, 2009
- Posted in *NIX . Announcements . MySQL . OSX
- Write comment
When installing PHP and MySQL on OSX you may get the error Can’t connect to local MySQL server through socket ‘/var/mysql/mysql.sock’. Or you may also get “No such file or directory” when calling mysql_connect from a PHP page. This occurs because PHP is looking for the file mysql.sock in it’s typical installation location of /var/mysql/mysql.sock. However the MySQL OSX installer actually puts the file in /tmp/mysql.sock. There are two easy ways to solve the problem.
Solution 1: Create a symbolic link
Open terminal and do the following:
sudo su
mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
You just created a symbolic link in the place where PHP expects the socket file to be located so it should be happy.
Solution 2: Edit php.ini
If you don’t like the idea of creating a symbolic link, you can also simply alter your php.ini file to point PHP to the real location of mysql.sock.
Locate /etc/php.ini. (If php.ini doesn’t exist on your system, copy /etc/php.ini.default to /etc/php.ini). You will likely have to do this from the terminal unless you have Finder configured to show hidden files. Open the file and update the setting mysql.default_socket so it looks like this:
mysql.default_socket = /tmp/mysql.sock
To commit the change you need to restart Apache. You can do that in System Settings -> Sharing, then uncheck, then recheck Web Sharing.
Thaaaaaaaaaaaaaaaaaaank You
Thanks. You saved me a lot of time. I still find it odd that copying /etc/php.ini.default to /etc/php.ini and restarting Apache causes the connection error. I wonder if PHP is actually reading some file besides /etc/php.ini.default if it doesn’t find /etc/php.ini.
hey Paul, if php doesn’t locate a php.ini file on the system then it will just use the defaults that were set at compile time. you can tell by creating a phpinfo page – it will not show any loaded php.ini file.
Thank you so much! I had no idea where to start on this one, you + google = relief.
Thank you, thank you, thank you … !