我有两台电脑,一台安装windows 7,另一台是CentOS 5.8
在 CentOS...
我使用 yum 命令安装 httpd(apache2.2)、php5.3.3 和 mysql。
- 百胜安装httpd
- 百胜安装php53
- 百胜安装 pdo
- 百胜安装 php53-mysql
首先我检查了 phpinfo,pdo,pdo_mysql 是否成功扩展,
然后我也在 CentOS Terminal 中检查 php -m ,也有扩展 pdo 和 pdo_mysql 。
我在 Windows 7 和 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;
}
}
}
?>
这是dbtest.php:
<?php
require_once( "db.php" );
$link_test = new DB( "mysql:dbname=pdotest;port=3306;host=192.168.1.127", "root" , "123456" );
var_dump($link_test);
?>
在 windows 中转储时,结果是:
object(DB)#1 (1) { ["conn":"DB":private]=> object(PDO)#2 (0), { } }
在 CentOS 中转储,结果是:
object(DB)#1 (1) { ["conn":"DB":private]=> NULL }
谁能告诉我为什么在 CentOS 中连接失败?
编辑于 2012/10/24 16:10 (亚洲/台北)
为了测试很多小时,我猜是 php pdo 有问题...
因为在我的局域网中,我可以通过 CentOS 终端连接任何 3306 端口的 mysql
但是在 php pdo_mysql 类中,我无法链接任何 mysql(甚至 CentOS 本地的 mysql )
所以...如何检查我的 pdo_mysql 扩展是否正常运行?
PS:对不起,我的英语很差:(