PHP:带有mysqli的未知MySQL服务器主机

 2020-11-22 

PHP: Unknown MySQL server host with mysqli

我有以下代码:

1
2
3
4
5
6
$username = 'username';
$password = 'password';
$host = 'localhost';
$db = 'dbname';
$dbh = new mysqli('p:'.$host, $username, $password, $db)
    or die('no connection to server');

但是我收到以下错误

1
PHP Warning:  mysqli::mysqli() [function.mysqli-mysqli]: (HY000/2005): Unknown MySQL server host 'p:localhost' (1) in /var/www/vhosts/politiker.lu/httpdocs/includes/sql.php on line 8

这让我很感兴趣,因为在我的开发环境中使用了完全相同的代码。 现在,我想在生产服务器上进行设置,但是它不起作用。 有任何想法吗?

注意:我对服务器不是很好,所以如果错误不重要,请原谅。

编辑1

这些是版本:
开发PHP(5.3.3-1ubuntu9.1)+ MySQL(5.1.49-1ubuntu8.1)
生产PHP(5.2.4-2ubuntu5.12)+ MySQL(5.0.51a)


像这样取出p:

1
2
$dbh = new mysqli($host, $username, $password, $db)
    or die('no connection to server');


只是添加了这个,因为我认为不清楚,但是问题绝对是您的PHP生产版本。直到5.3才添加mysqli扩展的持久连接,因为它们以前引起了麻烦。

有些主机可能安装了不同版本的PHP ...今天我意识到我可以让HostGator使用PHP 5.3!我只需要添加到我的.htaccess文件中:

1
2
Action application/x-hg-php53 /cgi-sys/php53
AddType application/x-hg-php53 .php

我认为您错过了此服务器中的mysqli软件包。尝试:

1
sudo apt-get install php5-mysqli

如果apt-get表示已安装,请尝试对localhost执行ping操作,如果不解决,请编辑/ etc / hosts并检查localhost指向127.0.0.1的行
应该在那儿,如果没有的话,那么您的服务器将被可怕地配置!

做一个

1
ifconfig

并检查是否得到这样的输出...

1
2
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0


您需要指定MySQL服务器的实际位置。对于开发,它是localhost(最有可能),与配置方式相同。但是对于生产服务器,这将是另外一回事。我怀疑应该是localhost