所以问题从根本上改变了,我将把原来的问题留在下面,以防止对有人回答他的问题后的回答进行不好的评论:
因此,我正在安装(确实很DO脚的)共享主机,该主机已安装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)
如果我将本地主机替换为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 无法使用命令行。(我知道这应该是技术支持的工作,但是它们确实很慢)
谢谢
上一个问题:
因此,今天的问题是:PDO连接在共享主机上不起作用,并且应该可以(安装在服务器上)。只是一个基本的PDO连接:
抛出此消息:
常规的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/>';
工作良好。
所以我试图弄清楚它到底在哪里!我尝试查看phpMyAdmin界面,但找不到信息,而且似乎phpMyAdmin连接到另一台服务器(它具有不同的IP地址,并且尝试用php连接到它给出了“错误的密码”错误)。mysql_connect也连接到该地址,我认为它使用一些内部密码/登录重定向到其他服务器。
好吧,如果您对如何获取此信息有任何想法(提供商的技术支持正在“解决问题” …已经1个月了…)。也可能问题出在其他地方,但是相同的东西在其他共享主机上也可以工作…
PDO的需要是因为我在该网站上使用了Symfony框架和Doctrine,而Doctrine插件需要PDO …我不想从头开始重做网站!
谢谢你的帮助 !
一年后,我找到了解决此问题的解决方案:使用SQLite数据库。PDO工作正常,但不适用于MySQL
编辑,因为每个人都对此表示反对:这解决了我的问题(我是OP)。我使用的是Doctrine,因此切换RDBMS既简单又快捷。此外,该网站是一些自制的CMS,流量很少,因此SQLite很好。
我知道这不是真正的问题“答案”,但是如果有人在相同的环境中: 糟糕的共享主机,您无法使用此奇怪的PDO-MySQL错误进行更改, 并且正在使用原则。这是一个解决方案。我可以删除此答案,但是如果我在OP时想到了这个答案,那么我会节省很多时间。