将mysql与pdo_mysql连接,在windows中成功运行,但在CentOS 5.8中失败
我有两台电脑,一台安装Windows7,另一台是CentOS 5.8将mysql与pdo_mysql连接,在windows中成功运行,但在CentOS 5.8中失败,mysql,pdo,centos,database-connection,Mysql,Pdo,Centos,Database Connection,我有两台电脑,一台安装Windows7,另一台是CentOS 5.8 在世纪 我使用yum命令安装httpd(apache2.2)、php5.3.3和mysql yum安装httpd yum安装php53 yum安装pdo yum安装php53-mysql 首先我检查phpinfo,pdo,pdo_mysql是否成功扩展 然后我还检查了CentOS终端中的php-m,也扩展了pdo和pdo_mysql 我在Windows7和CentOS之间运行相同的代码 窗口成功,但centos失败
在世纪 我使用yum命令安装httpd(apache2.2)、php5.3.3和mysql
- yum安装httpd
- yum安装php53
- yum安装pdo
- yum安装php53-mysql
我在Windows7和CentOS之间运行相同的代码 窗口成功,但centos失败 两个文件,db.php和dbtest.php 下面是db.php:
<?php
class DB
{
private $conn;
#### construct ####
public function __construct( $dsn , $db_user , $db_password , $showError = false )
{
try
{
$this->conn = new PDO( $dsn , $db_user , $db_password );
if( $showError ) // set error information show or not.
{
$this->conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
else
{
$this->conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
}
$setUtf8 = $this->conn->prepare( 'set names utf8' ); // set encoded by utf8
$setUtf8->execute();
}
catch( PDOException $err )
{
return false;
}
}
}
?>
在CentOS中转储,结果是:
object(DB)#1 (1) { ["conn":"DB":private]=> object(PDO)#2 (0), { } }
object(DB)#1 (1) { ["conn":"DB":private]=> NULL }
谁能告诉我为什么连接在CentOS中失败
编辑时间:2012/10/24 16:10(亚洲/台北) 对于测试多个小时,我猜是php pdo有问题 因为在我的局域网中,我可以通过CentOS终端连接任何3306端口的mysql 但在php pdo_mysql类中,我无法链接任何mysql(即使是CentOS local的mysql) 那么…如何检查我的pdo_mysql扩展是否正常运行
PS:对不起,我的英语很差:(Linux上的PHP/PDO将尝试通过套接字进行本地连接。您可以在
PHP.ini
中的PDO\u mysql.default\u socket
属性中配置此套接字的位置
您当然会遇到5.3.9中修复的问题(我想),因此我建议您升级到5.3.3版本之后。首先,感谢您回答我的问题:)
关注socket,我已经尝试了两种方法: 1) 正如您所说,我修改php.ini,添加pdo_mysql.default_套接字 然后重新启动httpd服务,但pdo-mysql连接仍然失败 2) 我修改了dbtest.php第3行(#3),这是DSN的一部分 Original=>“mysql:dbname=pdotest;port=3306;host=192.168.1.127”
新的 => “mysql:unix_socket=/var/lib/mysql/mysql.sock;dbname=pdotest;port=3306;host=192.168.1.127” ,但连接仍然失败
我还尝试了原始的mysql_连接测试链接数据库,它的工作 根据您的建议,我将在稍后将php更改为另一个版本(可能是5.4.8或低于5.3.3),然后发布结果
谢谢 浪费了很多时间…我终于找到了解决办法
当我看到如果将
$showError
设置为true
,会发生什么情况时,请不要丢弃异常。丢失try
和catch
并释放异常。还有,为什么选择PHP5.3.3?
object(DB)#1 (1) { ["conn":"DB":private]=> NULL }