说明:

 本文主要内容参考: Mac下PHP连接MySQL报错"No such file or directory"的解决办法, 并进行个人补充

  1. 运行环境: Mac OS X 10.11.4 (Mac 已经自带 Apache, PHP)

  2. 相关文件夹:

     /etc/apache2/     ##Apache 配置文件夹

     /Library/WebServer/Documents/    ##Apache 默认站点

     /usr/local/mysql-5.7.11-osx10.9-x86_64      ##mysql安装路径

    /private/php.ini.default      ##php的配置文件: 如配置 mysql.sock

>>问题原因:

For some reason mysql on OS X gets the locations of the required socket file a bit wrong, but thankfully the solution is as simple as setting up a symbolic link.

You may have a socket (appearing as a zero length file) as /tmp/mysql.sock or /var/mysql/mysql.sock but 1 or more apps is looking in the other location for it.

大神解释说: PHP 在 MySQL socket 方面, 默认的配置有问题. 那么现在只要修改 PHP 的配置文件, 配置正确的 MySQL socket 路径就可以了.

>>解决方案:

1. 获取当前 mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket 配置信息

建立一个 PHP 文件, 显示 phpinfo():

<?php
echo phpinfo();

用浏览器打开:

在此页面,找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket信息:

2. 获取 Mac MySQL socket 路径

通过控制台进入 MySQL, 输入命令: STATUS, 查找 UNIX socket 值

➜  / mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.11 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> STATUS
--------------
mysql Ver 14.14 Distrib 5.7.11, for osx10.9 (x86_64) using EditLine wrapper Connection id: 8
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: less
Using outfile: ''
Using delimiter: ;
Server version: 5.7.11 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 8 days 15 hours 1 min 17 sec Threads: 2 Questions: 21 Slow queries: 0 Opens: 114 Flush tables: 1 Open tables: 0 Queries per second avg: 0.000
--------------

3. 这时候, 你对比 mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket 和 通过 MySQL UNIX socket 发现不一样, 这就是 mysql_connect(); 警告的原因: PHP 配置 mysql 有问题.

 4. 重新配置 PHP, 打开php.ini(默认位置是: /private/etc/php.ini )

 

cd /private/etc/
chmod +rwx php.ini             ##修改文件权限
vim php.ini

之后修改mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket 的值为: /tmp/mysql.sock

(一共修改三处,分别为:mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket)

注意:

若用 vim php.ini 打开的文件为空(我操作的时候, 就是这样), 说明没有 php.ini 这个文件

这个时候, 你浏览 /etc/ 文件夹下, 会有 php.ini.default 文件, 复制 php.ini.default 重命名为 php.ini , 再用 vim 修改文件内容

cd /private/etc/
cp php.ini.default php.ini ##复制 php.ini.default, 并且重命名
chmod +rwx php.ini ##修改文件权限
vim php.ini

5,重启apache

sudo apachectl restart            ##重启 apache

解决啦!

最新文章

  1. 带你实现开发者头条APP(三) 首页实现
  2. 使用 DllImport 属性
  3. ORACLE管理存储结构之物理机构+逻辑结构【weber出品】
  4. Canny边缘检测算法的实现
  5. ajax接受json响应
  6. ajax接收json
  7. OptionMenu选项菜单
  8. HTML文档命名规则
  9. c/c++ 多线程 ubuntu18.04 boost编译与运行的坑
  10. XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Khamovniki
  11. 图像处理之gamma校正
  12. VSTO:使用C#开发Excel、Word【9】
  13. C#正则表达式类Match和Group类的理解
  14. Spring Security Hello World Example--reference
  15. 08Vue.js快速入门-Vue综合实战项目
  16. Windows7 64bit+python3.6环境下安装OpenCV3.3
  17. 关于React setState的实现原理(三)
  18. JZOJ6096 森林
  19. C++ Primer Plus学习:第九章
  20. 【BZOJ】3302: [Shoi2005]树的双中心 &amp;&amp; 2103: Fire 消防站 &amp;&amp; 2447: 消防站

热门文章

  1. 【Java每日一题】20170106
  2. iOS 小知识点(持续更新)
  3. Node.js Express连接mysql完整的登陆注册系统(windows)
  4. 开始mono开发
  5. .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点
  6. 作为前端er,写在年末的一些话
  7. Javascript之变量作用域
  8. 提高(Android)开发效率的工具与网站
  9. 【原】SDWebImage源码阅读(二)
  10. Android随笔之——Android时间、日期相关类和方法