私は2台のコンピューターを持っています。1台はWindows7をインストールし、もう1台はCentOS5.8です。
CentOSでは...
yumコマンドを使用してhttpd(apache2.2)、php5.3.3、およびmysqlをインストールします。
- yum install httpd
- yum install php53
- yum install pdo
- yum install php53-mysql
最初にphpinfo、pdo、pdo_mysqlをチェックします。成功は拡張されます。
次に、CentOSターミナルでphp -mもチェックし、pdoとpdo_mysqlも拡張しました。
Windows7とCentOSの間で同じコードを実行します
ウィンドウは成功しますが、centosは失敗します
db.phpとdbtest.phpの2つのファイル
これが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に編集(アジア/台北)
何時間もテストするために、私はphppdoに問題があると思います...
私のLANでは、CentOSターミナルで任意の3306ポートmysqlに接続できるためです
しかし、php pdo_mysqlクラスでは、mysqlをリンクできません(CentOSローカルのmysqlでさえ)
だから...私のpdo_mysql拡張機能が正常に動作していることを確認する方法は?
PS:申し訳ありませんが、私は英語が苦手です:(