php 连接mysql 主机 localhost,显示 No such file or directory

打开 php.ini文件,找到这1行

mysql.default_socket

然后将它修改为

mysql.default_socket=/path/to/mysql.sock

/path/to/mysql.sock是mysql的配置文件/etc/my.cnf中的socket的路径

如我当前虚拟机中的mysql 配置文件/etc/my.cnfsocket = /tmp/mysql.sock,所以修改php.ini中找到的mysql.default_socket =都改为mysql.default_socket = /tmp/mysql.sock,然后重启 apache,使配置生效



系统:Ubuntu 16.04
环境: Apache 2.4 + PHP 5.6.40 + Mysql 5.5.31

php连接mysql demo代码:

$conn = mysql_connect('localhost','root','secret');

if(!$conn){
    die(mysql_error());
}

echo "success"; 

主机使用localhost,显示No such file or directory的错误。改为127.0.0.1之后可以连接成功。

前提: 我的mysql配置文件 /etc/my.cnf[mysqld]节点下的配置项 socket = /tmp/mysql.sock

终端命令(用来查看 php 信息中mysql.default_socket的配置情况):

php -i | grep mysql.default_socket

运行结果:

mysql.default_socket => no value => no value
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock

php.ini中mysql.default_socket的默认路径和当前运行mysql 配置文件中的socket的值/tmp/mysql.sock 不相等

我的LAMP环境中php.ini文件有2个,路径分别是:/etc/php/5.6/cli/php.ini/etc/php/5.6/apache2/php.ini

将上面2个php.ini文件中mysql.default_socket = 都修改成mysql.default_socket = /tmp/mysql.sock,然后重启apache2

终端命令:

sudo service apache2 stop # 停止apache
sudo service apache2 start # 启动apache

再次查看 mysql.default_socket的配置是否生效

终端命令:

php -i | grep mysql.default_socket

运行结果:

mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

配置成功,然后通过浏览器,访问带有上面 php连接mysql demo代码的文件,运行结果为success.

Reference
  1. MySQL connection not working: 2002 No such file or directory

原文地址:https://www.cnblogs.com/fsong/p/11337105.html

时间: 2024-07-31 22:39:21

php 连接mysql 主机 localhost,显示 No such file or directory的相关文章

PHP连接MySQL报错"No such file or directory"的解决办法

好下面说一下连接MYSQL数据库时报错的解决办法. 1,首先确定是mysql_connect()和mysql_pconnect()的问题,故障现象就是函数返回空,而mysql_error()返回“No such file or directory” 2,写个phpinfo页面,找到mysql.default_socket.mysqli.default_socket.pdo_mysql.default_socket 3,启动mysql(见说明2),执行命令 STATUS; 记下UNIX socke

解决MAC下PHP连接MYSQL错误Warning: mysql_connect(): No such file or directory in conn.php

今天在mac上用php去连接mysql数据库,出现了 mac PHP Warning:  mysql_connect(): [2002] No such file... 详细例如以下所看到的: DirkMacBook:vote Dirk$ phpunit MyTest.php  Warning: mysql_connect(): No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/myvote/vote/conn.

Mac下PHP连接MySQL报错"No such file or directory"的解决办法

首先做个简短的介绍. [说明1]MAC下MYSQL的安装路径: /usr/local/mysql-5.1.63-osx10.6-x86_64 数据库的数据文件在该目录的data文件夹中: 命令文件在bin文件夹中. [说明2]通过终端打开MYSQL命令行的方法: /usr/local/mysql-5.1.63-osx10.6-x86_64 好下面说一下连接MYSQL数据库时报错的解决办法. 1,首先确定是mysql_connect()和mysql_pconnect()的问题,故障现象就是函数返回

Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器

转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConver

Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败

错误原因例如以下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99) at org.hibernate.exception.JDBCExceptionHelper.convert(J

【转】Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败

错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99) at org.hibernate.exception.JDBCExceptionHelper.convert(JDB

通过端口 8080 连接到主机 localhost 的 TCP/IP 连接失败。错误:“驱动程序收到意外的登录前响应。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受

1. 点击 开始 --> 所有程序 --> Microsoft SQL Server2005 --> 配置工具-->SQL Server configuration Manager- 选择左边 SQL Server 2005 网络配置 -->双击 MSSQLSERVER 协议--> 选中 TCP/IP 右键 点击启用:2. 选择左边 SQLServer 2005 服务 --> 选择右边SQL Server(MSSQLSERVER) --> 右击选择重新启动

php的mysqli_connect函数显示 No such file or directory错误以及localhost换成127.0.0.1执行成功

linux环境-php7-MariaDB5.5.60 (新安装的php7,执行php -m 显示有mysqli模块,php.ini没有改其它) 测试代码为: <?php //~ echo date('Y-m-d H:i:s',time()); $link_id = mysqli_connect('localhost','root',''); if($link_id) { echo 'ok'; } else { echo mysqli_connect_error(); } ?> 网页运行时显示

centos7数据库连接使用127.0.0.1报permission denied,使用localhost报No such file or directory

安装lamp环境后,测试数据库连接. 当host使用127.0.0.1时,报错:(HY000/2002): Permission denied. 把host换成localhost后,又报错:SQLSTATE[HY000] [2002] No such file or directory. 最后发现是因为没有关闭selinux,通常情况下载安装完CentOS7后,默认情况下SElinux是启用状态. [[email protected] ~]# sestatus SELinux status: e