问题已经发生了变化,为了避免像之前那样因为别人修改问题而导致差评,我会在下面保留原始问题:
我正在使用一个(非常糟糕的)共享主机,该主机安装了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';
请确认。
本地主机重定向到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...我不想从头开始重新制作网站!
感谢您的帮助!