PHP:mysqli_connect-使用本地主机套接字时

时间:2019-03-14 01:44:03

标签: php mysql mysqli unix-socket

我正在从mysql迁移到mysqli。当前我的服务器同时运行pdo,mysql和mysqli。另外,PHP 5.6.34在docker中运行。 MySQL版本是10.2.16-MariaDB-log MariaDB服务器,它在主机上运行。操作系统是CentOS Linux7。

连接到数据库的脚本是:

  if($mysqli){//never works
    $res  = $GLOBALS["___mysqli_ston"] = mysqli_connect("localhost",  "user",  "pass" , NULL, 0, 'var/sockets/mysql.sock');
  }
  else{//always works
    $res  = mysql_connect(':/var/sockets/mysql.sock', "user", "pass" ); 
  }
  if (!$res){ 
    die("err");  
  }  

使用mysql连接到db可以正常工作。但是每次我尝试使用mysqli连接到数据库时,都会得到以下错误:

(!)警告:mysqli_connect():(HY000 / 2002):在第20行的/var/www/html/Lib_SQL.php中没有这样的文件或目录

第20行:

$ res = $ GLOBALS [“ ___ mysqli_ston”] = mysqli_connect(“ localhost”,“ user”,“ pass”,NULL,0,'var / sockets / mysql.sock');

我已经在php.ini文件上设置了默认套接字:

mysql.default_socket => /var/mysql/mysql.sock

我还注意到,强制与数据库建立TCP / IP连接不会导致此警告,例如:

$res  = $GLOBALS["___mysqli_ston"] = mysqli_connect("hostname.com",  "user",  "pass" , NULL, 0, 'var/sockets/mysql.sock');

那么我如何使用mysqli_connect通过本地unix套接字连接到我的数据库?有提示吗?

1 个答案:

答案 0 :(得分:-1)

您做错了方法。

尝试下面的代码。将数据库凭据更改为您的

<?php
         $dbhost = 'localhost';
         $dbuser = 'db username here';
         $dbpass = 'db -password here';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass);

         if(! $conn ){
            die('Could not connect: ' . mysqli_error());
         }
         echo 'Connected successfully';
         mysqli_close($conn);
      ?>