这是针对安装了本地的Apache HTTP和自定义安装的MySQL的Mac OS X。
答案基于@alec-gorge的出色回答,但由于我不得不搜索一些特定的更改以在我的配置中进行配置,大多数是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服务器(如果已经启动需要重新读取配置文件,则使用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 相关的错误,请检查日志。没有错误意味着您已经完成了,PHP5 与 MySQL 应该可以正常工作。恭喜!
PDOException: SQLSTATE(2002) No such file or directory
- kenorb