Таким образом, проблема изменилась по сравнению с тем, что было, я оставлю оригинальный вопрос ниже, чтобы избежать плохих отзывов на ответы, которые были у меня после того, как кто-то отредактировал его вопрос, на который я ответил:
Итак, я работаю на (действительно слабом) виртуальном хостинге, на котором установлен PDO, но он не работает.
С параметрами по умолчанию
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=THE_DB_NAME', 'THE_USER', 'THE_PASSWORD');
echo 'Connected to database';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
выдает это сообщение:
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
С простым mysql_connect это работает.
И путь к сокету кажется правильным (и phpinfo, и этот запрос:
show variables like 'socket';
подтверждение.
Localhost перенаправляет на 10.103.0.14 (эти данные поступают из mysql_get_host_info () и из phpMyAdmin)
В PDO, если я заменю localhost на 127.0.0.1, я получу
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)
И если я заменю localhost на 10.103.0.14:
Access denied for user 'USER_NAME'@'10.103.0.14' (using password: YES
Оба IP-адреса (127.0.0.1 и 10.103.0.14) работают с mysql_connect.
Так что, очевидно, проблема в соединении PDO.
Кто-нибудь знает, откуда это может прийти и / или каким-либо образом это исправить?
Некоторые данные сервера:
Версия PHP: 5.2.10
Вы можете увидеть phpinfo сервера: http://web.lerelaisinternet.com/abcd.php?v=5
Командная строка невозможна.
(я знаю, что это должна быть работа техподдержки, но они слишком медленные)
Спасибо
Предыдущий вопрос:
Как найти mysql.sock на общем хосте (нужен хитрый способ ...)
Итак, сегодняшняя проблема заключается в следующем: соединение PDO не работает на общем хосте, и оно должно (оно установлено на сервере).
Просто базовое соединение PDO:
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=THE_DB_NAME', 'THE_USER', 'THE_PASSWORD');
echo 'Connected to database';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
выдает это сообщение:
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Обычное соединение mysql:
mysql_connect("localhost", "THE_USER", "THE_PWD") or die(mysql_error());
mysql_select_db("24DLJLRR1") or die(mysql_error());;
echo 'Connected to database <br/>';
отлично работает.
Так что, очевидно, он не может найти .sock.
Я думаю, что указание правильного адреса должно работать, я попробовал какой-то «классический» путь MySQL, который я нашел в Интернете, но безуспешно.
Phpinfo говорит, что это по этому адресу (/var/lib/mysql/mysql.sock)
(Версия PHP 5.2.10)
Вы можете увидеть phpinfo сервера: http://web.lerelaisinternet.com/abcd.php?v=5
Так что я пытаюсь выяснить, где, черт возьми, это !!!
Я попытался посмотреть в интерфейсе phpMyAdmin, но не смог найти информацию, плюс мне кажется, что phpMyAdmin подключается к другому серверу (у него другой IP-адрес, и при попытке подключиться к нему с помощью php выдается «Неверный пароль»). ошибка). Mysql_connect также подключается к этому адресу, я думаю, что он перенаправляет на другой сервер с некоторым внутренним паролем / логином.
Хорошо, если у вас есть идея, как получить эту информацию (техническая поддержка провайдера "решает проблему" ... прошло 1 месяц ...).
Также, возможно, проблема в другом месте, но то же самое работает на других общих хостах ...
Необходимость PDO заключается в том, что для этого веб-сайта я использую инфраструктуру Symfony с Doctrine, а плагину Doctrine требуется PDO ... Я не хочу переделывать веб-сайт с нуля!
Спасибо за вашу помощь!