【问题标题】:How to connect a PHP app to MySQL via pipes?如何通过管道将 PHP 应用程序连接到 MySQL?
【发布时间】:2020-01-11 13:10:19
【问题描述】:
我发现可以通过their documentation of MySQLi 中的管道将 PHP 连接到 MySQL,但我终其一生都找不到任何人解释需要什么。
host 参数声明:
如果可能,将使用管道而不是 TCP/IP 协议。
但是什么时候“可能”呢?我有自己的机器,我绝对有必要的权限来实现这一点,我只是不知道怎么做。检查host_info 时,连接到主机localhost 报告“Localhost via UNIX socket”。
尝试关注该页面上的一条(被否决的)评论,并连接到主机 .,并将 socket 参数设置为 mysql,会导致 2002 连接错误。
我如何告诉它(总是)通过管道连接?
【问题讨论】:
标签:
php
mysql
mysqli
named-pipes
【解决方案1】:
今天我遇到了同样的问题,在 Windows 上解决这个问题需要很多时间。
我可以使用以下代码建立命名管道连接:
$connection = new mysqli('.', 'user', 'pass', 'database', null, '\\\\.\\pipe\\name_of_pipe');
我要连接的服务器具有以下配置:
[mysqld]
skip-networking
enable-named-pipe
socket=name_of_pipe
使用'127.0.0.1'、'localhost' 或NULL 作为主机名不起作用。此外,您必须指定命名管道的路径,而不仅仅是管道的名称。
不幸的是,这里的 PHP 文档有点弱......
【解决方案2】:
命名管道只能在 Windows 下工作。
还有
每当您指定“localhost”或“localhost:port”作为服务器时,MySQL 客户端库将覆盖它并尝试连接到本地套接字(Windows 上的命名管道)。如果要使用 TCP/IP,请使用“127.0.0.1”而不是“localhost”。如果 MySQL 客户端库尝试连接到错误的本地套接字,您应该在 PHP 配置中设置正确的路径,并将服务器字段留空。
实际的PHP文档中没有提到,但应该还是有效的。