php-PRESTASHOP:如何告诉PDO类通过套接字而不是’localhost’连接?

函数_getPDO的/classes/db/DbPDO.PHP中的Prestashop 1.6.1中,我看到dsn连接字符串的PDO是有条件构建的.特别值得关注的是以下代码片段:

$dsn = 'MysqL:';
if ($dbname)
        $dsn .= 'dbname='.$dbname.';';
if (preg_match('/^(.*):([0-9]+)$/', $host, $matches))
        $dsn .= 'host='.$matches[1].';port='.$matches[2];
elseif (preg_match('#^.*:(/.*)$#', $host, $matches))
        $dsn .= 'unix_socket='.$matches[1];
else
        $dsn .= 'host='.$host;

因此,为了将连接类型设置为unix_socket,期望在$host中看到什么?

我想它正在看settings.inc.PHP中的_DB_SERVER_变量.那正确吗?
目前,我将其设置为“ localhost”.我需要将其更改为使用套接字/var/lib/MysqL/MysqL.sock连接PDO吗?

感谢您的任何建议,
雷恩

解决方法:

查看代码,这似乎是窍门:

define('_DB_SERVER_', 'unix:/var/lib/MysqL/MysqL.sock');

冒号之前无关紧要的事情.重要的是字符串始于一行的开头,先有一个冒号然后是斜杠(“:/”),此后的所有内容都是套接文件绝对路径.因此,此模式需要套接字的绝对路径.

_DB_SERVER_常量似乎是根据文档配置PrestaShop数据库的规范方法.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...