PHP: неизвестный сервер MySQL с mysqli - PullRequest
1 голос
/ 23 ноября 2010

У меня есть следующий код:

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

Но я получаю следующую ошибку

PHP Warning:  mysqli::mysqli() [<a href='function.mysqli-mysqli'>function.mysqli-mysqli</a>]: (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)

Ответы [ 4 ]

6 голосов
/ 23 ноября 2010

достаньте p: вот так:

$dbh = new mysqli($host, $username, $password, $db) 
    or die('no connection to server');
3 голосов
/ 11 декабря 2010

Просто добавляю это, так как я не думал, что это понятно, но проблема, безусловно, в вашей рабочей версии PHP.Постоянные соединения для расширений mysqli не добавлялись до версии 5.3, поскольку раньше они вызывали головную боль.

На некоторых хостах могут быть установлены разные версии PHP ... Сегодня я понял, что могу заставить HostGator использовать PHP 5.3!Мне просто нужно было добавить в мой файл .htaccess:

Action application/x-hg-php53 /cgi-sys/php53
AddType application/x-hg-php53 .php
2 голосов
/ 23 ноября 2010

Я думаю, что вы пропустили пакет mysqli на этом сервере.Попробуйте:

sudo apt-get install php5-mysqli 

, если apt-get говорит, что он уже установлен, попробуйте выполнить команду ping для localhost, если не разрешите редактирование / etc / hosts и проверьте строку, где localhost указывает на 127.0.0.1, следуетбудь там, если нет, твой сервер ужасно сконфигурирован!

сделай

ifconfig 

и проверь, получишь ли ты какой-нибудь вывод вроде этого ...

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
0 голосов
/ 23 ноября 2010

Вам необходимо указать фактическое местоположение сервера MySQL.Для разработки это localhost (скорее всего), просто как у вас настроено.Но для производственных серверов это будет нечто другое.Я сомневаюсь, что это должно быть localhost.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...