Итак, проблема изменилась с того, что было, я оставлю исходный вопрос ниже, чтобы предотвратить плохие отзывы о ответах, подобных мне, после того, как кто-то редактировал свой вопрос, на который я ответил:
Итак, я работаю над (действительно хромым) хостингом, на котором установлен 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... Я не хочу переделывать сайт с нуля!
Спасибо за вашу помощь!