一、报错描述
????最近在做一个移动+php+mysql项目时,由于mac新版的XAMPP不太一样,出现了很多问题。其中最头疼的就是在php连接mysql数据库时一直没能连上,报错信息为mysqli_real_connect(): (HY000/2002): No such file or directory,之前还出现过一系列报错如Access denied for user ‘root’@‘localhost’ ,总之是被恶心到了,弄了很久。
二、新版XAMPP的启动
????首先介绍一下mac新版XAMPP的启动方式,运行XAMPP后点击General中的start,我这里启动后出现了一个IP地址192.168.4.2,也就是说,XAMPP实际上运行在一台服务器上。 ????接下来,将Services中的所有服务和Network中的网络端口都打开,如下图所示。 ????然后,在Volumes中点击Mount,这表示将远程的文件夹装载到本机,如下图所示。
三、报错解决方法
????网上的解决方法有很多,但绝大多数都是针对XAMPP比较旧的版本,无法解决我的问题。所以经过了很长时间的摸索后,我才发现问题所在。 ????mac新版的XAMPP可以通过General中的Open Terminal进入服务器,从下图中可以看出,这是一台Debian版本的Linux服务器。 ????mysql的目录就存放在/opt/lampp/bin中,可以通过cd命令进入。即通过如下命令进入mysql
cd /opt/lampp/bin
mysql -u root -p
????输入密码后就可以运行mysql,初始密码一般为空。在里面可以进行一些设置,比如root的密码等,这对于php连接mysql非常重要,如果php的用户名和密码设置与mysql的用户不相同,就可能出现报错Access denied for user ‘root’@‘localhost’。出现这种报错,还有一种可能,就是php的主机名设置为’localhost’,设置成’127.0.0.1’即可,过程如下: ????(1) 在服务器上下载nano或vim,打开编辑config.inc.php ????(2) 找到以下信息
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['user'] = '这里填写用户名';
$cfg['Servers'][$i]['password'] = '这里填写你的MySQL密码';
????(3) 修改如下
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['user'] = '这里填写用户名';
$cfg['Servers'][$i]['password'] = '这里填写你的MySQL密码';
????关于报错信息mysqli_real_connect(): (HY000/2002): No such file or directory,网上有说的要改phpmyadmin的配置文件的很多,真正原因是php.ini中配置的mysqli没有与实际的mysql.sock对应正确。 ????服务器上mysql.sock的路径为/opt/lampp/var/mysql/mysql.sock,用nano或vim打开路径为/opt/lampp/etc目录下的php.ini文件,对配置进行修改。
pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket=/tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
修改为
pdo_mysql.default_socket= /opt/lampp/var/mysql/mysql.sock
mysql.default_socket=/opt/lampp/var/mysql/mysql.sock
mysqli.default_socket = /opt/lampp/var/mysql/mysql.sock
????重新启动XAMPP,大功告成!
|