Normally OS upgrades seem to go so smoothly… But this one left me (and I’m sure many others) with a nasty surprise — no communication between PHP and MySQL. Not nice. After a couple quick searches and no answers I decided to search out one myself. Discovering the problem was simple, and so apparently, was devising a solution.
If you fire up a quick PHP info file, you’ll see that the MySQL socket specified in the included version of PHP is wrong (or at least different and not what is expected) compared to older OS releases.
In 10.4.4, it is set as with-mysql-sock=/var/mysql/mysql.sock
, whereas previously it was /tmp/mysql.sock
.
Thankfully, there are at least two things you can do to remedy this.
- Locate and edit a
php.ini
file (by default it should be in the /etc directory and find the mysql.default_socket line and simply add/tmp/mysql.sock
following the equals sign, save and restart Apache. - In a plain text editor, create a new file in
/etc/
namedmy.cnf
. In the file, include a line which reads (on two lines):
[mysqld]
socket=/tmp/mysql.sock
Edit: The original second solution has been removed due to security concerns as indicated by Apple. A revised alternative solution has been added in its place.
So say you…
In the interest of completeness, on my own system rather than replacing the socket link I just have a blank space where “=/tmp/mysql.sock” should be. Just add that in and things will go fine.
Incidentally, you can use your favorite editor to make the change rather than having to learn vIm or something. Just use “open -a nameofeditor php.ini” and it will open up in TextWrangler or BBedit or whatever it is you use.
Chris January 11, 2006
Right. True. BBEdit, TextWrangler and TextMate all include command-line tools that can make it simple to open files in the respective apps, so there is little or no need to learn vim, pico or vi.
For BBEdit it’s as simple as typing “bbedit /etc/php.ini”, and assuming the file exists, it will launch BBEdit and open the file for editing. Note you may need an administrator password before it lets you save any changes to a file.
Scott January 11, 2006
Odd, Mine didn’t change a bit. MYSQL_SOCKET /tmp/mysql.sock
Any idea why that might have happened?
Jason January 11, 2006
Jason - what did you do to check the MySQL socket? I did end up seeing another option for apparently fixing the connection problem today on MacFixit.com, but it didn’t seem as appealing to me.
Scott January 11, 2006
I have a file on my PowerBook that is simply phpinfo(). I opened that and hunted for mysql where I found MYSQL_SOCKET /tmp/mysql.sock.
I had updated to 10.4.4 last night and I have not noticed anything worng with PHP/mySQL talking to each other.
Jason January 11, 2006
You might want to check out this note from Apple: http://docs.info.apple.com/article.html?artnum=302977
sfn January 14, 2006
Okay, I see now that the technote has been read… sorry.
sfn January 14, 2006
sfn: Yeah, I saw that and updated the post to reflect the recommendations from Apple.
Scott January 14, 2006