x1. 背景介绍 之前的博客是lamp架构, 由于云服务器内存有点低, 现在想改为lnmp架构. 毕竟nginx和apache相比,nginx占用的系统内存会少点。
lnmp已经搭建好了, 访问网站时提示无法连接到数据库.
[root@90root nginx]# curl localhost
Error establishing a database connection
当我关闭nginx服务开启apache访问正常.
先写一个phpinfo函数, 查看php配置时所指定的mysql.sock所指定的路径。
在配置phpl时, --with-mysql-sock指定的位置为/tmp/mysql.sock 到/tmp目录下没找到这个文件,所以php连接时找不到mysql.sock。
但是在命令行通过mysql命令可登录并正常操作。
x2. 解决办法
1. 命令行下登录mysql, 执行一下命令。
mysql -uroot -p
mysql> show variables like 'socket';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| socket | /usr/local/mysql/mysql.sock |
+---------------+-----------------------------+
1 row in set (0.00 sec)
2. 编辑php.ini ,找到mysql.default_socket配置项, 默认一般是空值.
将此项修改为: mysql.default_socket= /usr/local/mysql/mysql.sock
vim /usr/local/php-fpm/etc/php.ini
mysql.default_socket = /usr/local/mysql/mysql.sock
3. 重启php
/etc/init.d/php-fpm restart
4. 验证
lnmp已经搭建好了, 访问网站时提示无法连接到数据库.
[root@90root nginx]# curl localhost
Error establishing a database connection
当我关闭nginx服务开启apache访问正常.
先写一个phpinfo函数, 查看php配置时所指定的mysql.sock所指定的路径。
在配置phpl时, --with-mysql-sock指定的位置为/tmp/mysql.sock 到/tmp目录下没找到这个文件,所以php连接时找不到mysql.sock。
但是在命令行通过mysql命令可登录并正常操作。
x2. 解决办法
1. 命令行下登录mysql, 执行一下命令。
mysql -uroot -p
mysql> show variables like 'socket';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| socket | /usr/local/mysql/mysql.sock |
+---------------+-----------------------------+
1 row in set (0.00 sec)
2. 编辑php.ini ,找到mysql.default_socket配置项, 默认一般是空值.
将此项修改为: mysql.default_socket= /usr/local/mysql/mysql.sock
vim /usr/local/php-fpm/etc/php.ini
mysql.default_socket = /usr/local/mysql/mysql.sock
3. 重启php
/etc/init.d/php-fpm restart
4. 验证
编辑回复