启用PDO后 - 错误2002 getaddrinfo失败:名称或服务未知

teh*_*ron 2 php lamp pdo bitnami

我最近了解了PDO,所以我改变了我的php文件以适应格式,现在我收到了这个回复:

ERROR: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

我没有改变连接变量只是适合PDO的格式.我正在运行一个Bitnami Lampstack(5.3.16-0)并做了文档所说的,只要在php.ini文件中取消注释PDO与mysql的行.我想知道它是否与我的mysql.sock文件有关,其大小为0.

我的PDO连接看起来像这样(我添加了unix_socket和端口件,因为它们在另一个与此错误相关的问题中被提及但它们似乎没有帮助):

$dbConnection = new PDO('mysql:unix_socket=/opt/lampstack-5.3.16-0/mysql/tmp/mysql.sock;host=$dbhost;port=3306;dbname=$dbname;', $user, $pass);

apache,mysql,httpd,ect都在我的服务器上正常运行,这只能在启用PDO后启动.

Ray*_*Ray 5

首先,您的示例中的连接字符串是单引号,因此变量替换将不起作用.如果您打算使用变量$ dbhost的内容,请使用双引号.

其次,您不应同时指定本地套接字和主机/端口.选择一个或另一个.我在你的帖子中猜测套接字不是最初的意图.

试试这个:

 $dbConnection = new PDO("mysql:host=$dbhost;port=3306;dbname=$dbhost", $user, $pass);
Run Code Online (Sandbox Code Playgroud)

此外,您的示例将dbname指向$ dbhost变量.这是拼写错误吗?

套接字都是0字节.它们只是可以读取和写入的命名管道,但它们本身没有内容.如果要使用它,只需验证套接字是否存在.

祝好运!