※ ChatGPTを利用し、要約された質問です(原文:PHPUnitでPDOのテスト)
PHPUnitでPDOのテストでPDOExceptionが発生するエラーの解決方法
このQ&Aのポイント
PHPUnitで以下のようなテストをすると、エラーが発生します。PDOException: could not find driverというエラーが表示され、ググるとphp.iniにextension=pdo.soを追加するように書かれています。
そこで、pdo.soをインストールし、php.iniに追加しましたが、再起動後にPHP Warning: Module 'PDO' already loaded in Unknown on line 0というエラーが発生しました。
このエラーを解決するためには、php.iniに追加する前に既にPDOが読み込まれているかどうかを確認する必要があります。読み込まれている場合は、追加する必要がありません。読み込まれていない場合は、extension=pdo.soを追加して再起動すれば問題が解決するはずです。
PHPUnitで以下のようなテストをすると、エラーがでます。
<?php
require_once 'PHPUnit/Extensions/Database/TestCase.php';
class DatabaseTest extends PHPUnit_Extensions_Database_TestCase
{
protected function getConnection()
{
$dbtype = "mysql";
$sv = "localhost";
$dbname = "testdb";
$user = "root";
$pass = "";
// データベースに接続する
$dsn = "$dbtype:dbname=$dbname;host=$sv";
$pdo = new PDO($dsn, $user, $pass); ← ここでエラー
return $this->createDefaultDBConnection($pdo, 'book');
}
protected function getDataSet()
{
return $this->createFlatXMLDataSet(dirname(__FILE__).'/book-seed.xml');
}
public function testInitDataSet()
{
$dataset = $this->getDataSet();
$this->assertDataSetsEqual(
$dataset,
$this->getConnection()->createDataSet(),
"データセットの初期化エラー"
);
}
}
?>
エラー内容
PDOException: could not find driver
could not find driverでググると、php.ini にextension=pdo.soを追加しろとありました。
pearでpdo.soをインストールし、php.iniに追加して、php(lampp)を再起動すると、
PHP Warning: Module 'PDO' already loaded in Unknown on line 0
となります。
どのようにすればよろしいのでしょうか?
よろしくお願いいたします。
ubuntu10.10
xampp-linux-1.7.1(Apache:2.2.11,PHP:5.2.9,mysql:5.1.33)
PHPUnit 3.4.13
お礼
ご回答ありがとうございます。 解決しました。 根本的な問題として、PHPunitのインストールがまちがっていました。 【間違ったインストール】 $ sudo pear install -a phpunit/PHPUnit 通常のubuntuのデフォルト環境下にPHPunitインストール 【XAMPP下でインストール】 /opt/lampp/bin $ sudo ./pear install -a phpunit/PHPUnit PHP Warning: Module 'PDO' already loaded in Unknown on line 0 の件については、php.ini以外に、pdo.iniファイルを読んでいて、そのなかでextension=pdo.soの記述があったためでした。 お礼入力遅くなって申し訳ありませんでした。 ありがとうございました。