连接到PHP中的非标准MySQL套接字

用PHP连接到MySQL数据库通常不是一件容易的事,实际上,这是许多教程首先要做的事情之一。但是,在某些情况下,需要比标准主机,密码和用户名详细信息更多的信息。一个很好的例子是通过不同的(或至少是非标准的)套接字连接到本地MySQL服务器时。在Linux安装中,MySQL套接字的通常放置位置是/var/run/mysqld/mysqld.sock,但是某些主机可能会对此进行更改。

php.inipdo_mysql,mysql和mysqli部分中存在一个名为default_socket的文件,如果需要将PHP指向其他套接字,则应首先使用这些设置。还有一些名为MYSQL_SOCKET和MYSQLI_SOCKET的系统常量,它们由PHP在编译时使用正确指定的“ --with-mysql”设置创建。一些配置不当的主机将无法正确编译PHP或未设置这些变量,因此在尝试连接到“ localhost”时可能会遇到问题。

在阅读了一段时间后,我在互联网上发现很多关于如何创建所有这些设置以及在连接到MySQL数据库时它们如何影响PHP的困惑。如果您将“ localhost”指定为服务器名称,则将使用MYSQL_SOCKET(以及类似的MYSQLI_SOCKET)。在这种情况下,PHP通过套接字而不是通过TCP / IP进行通信。这可能仅在标准位置查找套接字文件。

我已经读到,如果mysql.default_socket指定了该设置,那么将使用该设置而不是MYSQL_SOCKET设置。我的经验是事实并非如此,而是优先使用MYSQL_SOCKET设置。如果您有任何其他经验,我将不胜感激。

尝试连接到未正确配置的本地主机时,在创建与数据库的连接时需要设置套接字位置。标准的MySQL库和新的MySQLi类在这里的工作略有不同。假设新的套接字位置是/a/random/directory/mysqld.sock,我们可以使用以下方法之一连接到数据库。

$connection = mysql_connect('localhost:3306/a/random/directory/mysqld.sock', 'username', 'password');
 
$mysqli = new mysqli('localhost', 'username', 'password', "", 3306, '/a/random/directory/mysqld.sock');

这看起来并不难,但是对于以前从未见过此事的人(即,我),php.net文档在此问题上有点令人困惑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gzxgyzbb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值