PHP Socket PDO SQLSTATE [HY000] [2002]没有这样的文件或目录

时间:2017-03-17 13:15:09

标签: php mysql pdo websocket

简介

在过去的几天里,我一直在搞乱PHP网络套接字,试图为用户实时检索一些关于各种不同人员的信息。

我在Ubuntu上运行最新版本的XAMPP(位于/opt/lampp/下),我使用PHP运行的Web套接字,我使用apt-get install php安装。这打开了一个没有任何问题的套接字。

我面临的问题与在PDO的帮助下从Web套接字建立数据库连接有关。每当我尝试建立与localhost上的数据库的连接时,都会收到以下错误消息:

SQLSTATE[HY000] [2002] No such file or directory

由于PHP和我的MySQL服务器彼此不了解,考虑到MySQL是通过XAMPP实例运行的,而服务器是使用PHP的版本运行的(与XAMPP的版本相同)我使用apt-get安装,有人可能会认为这是问题的原因。但是,只要您拥有服务器配置的正确用户名和密码,服务器是否应该可以访问?

研究

我一直在做一些关于这个问题的研究,并找到了解决问题的多种潜在解决方案,但似乎没有人能够胜任这项工作。例如,on this question,建议你可以通过对你的服务器软件以及PHP做一些巫术来解决这个错误 - 我已经尝试了这一点并取得了明显的成功。

在其他问题上,它建议您更改此DSN PDO设置:

$dsn = "mysql:host=$host;port=$port;dbname=$name;charset=$charset";

而不是使用" localhost"对于主持人,你坚持使用127.0.0.1 - 事实上,如果我这样做,我甚至无法连接到我的服务器。这样做,我的XAMPP卡在某种形式的无限循环中。从127.0.0.1更改回localhost后一分钟左右,它再次开始工作。

我不记得在哪里,但我也记得看到有人说它根本不可行(从PHP套接字连接到MySQL),我觉得这很奇怪。

有些人似乎也建议切换到Node.js来处理实时连接,但我非常希望尽可能保留所有PHP。

此外

我可能只是一个完整的白痴(我是;-)),但如果有人能指出我正确的方向,那将非常感激!

1 个答案:

答案 0 :(得分:2)

您需要指定套接字的路径 例如:

$dsn = 'mysql:dbname=testdb;unix_socket=/path/to/socket';

尝试搜索/ opt / lamp

中的文件mysql.sock
相关问题