PHP で MySQL を操作するのに役立つリファレンス

PHP+MySQLリファレンス!

対応方法:Fatal error: Class 'mysqli' not found in C:\temp\test.php on line 3

スポンサードリンク

PHP を実行した際に Fatal error: Class 'mysqli' not found と表示された場合の対応方法について説明します。

このエラーが表示された場合は、原因として php.ini で mysqli 拡張モジュールを有効にしていないことが考えられます。

この場合の対応方法は次の通りです。

尚、実際に接続テストを行う際には、以下のサンプルコードを使用可能です。ホスト名、ユーザー名、パスワード、データベース名を自分の環境に書き換えてご使用ください。

<?php
//接続設定
// ユーザー taro@localhost を パスワード abcd で接続し、
// test データベースに接続する場合の設定。
$host          = 'localhost';//ホスト名
$user_name     = 'taro';     //ユーザー名
$user_password = 'abcd';     //パスワード
$database_name = 'test';     //データベース名

print "------------- START -------------\n";

//接続設定に従って MySQL に接続
$mysqli = new mysqli($host, $user_name, $user_password, $database_name);

//正常に接続していれば、接続した MySQL サーバーのバージョンを表示
print $mysqli->server_info . "\n";

//MySQL から切断
$mysqli->close();

print "-------------  END  -------------\n";
?>

このプログラムで正常に接続できた場合、MySQL5.6.21では次のように表示されます。

------------- START -------------
5.6.21
-------------  END  -------------

php.ini が無い場合はテンプレートをコピーして作成する。

php.ini がない場合、PHP をインストールしたフォルダ内にある php.ini-development または php.ini-production をコピーして php.ini を作成します。

php.ini-development は開発環境用のテンプレートファイルで、 php.ini-production は本番環境用の php.ini のテンプレートファイルです。

本番環境用のテンプレートでは、エラー表示を抑制する設定などがあったりするので、開発目的や学習目的に PHP を使用するのであれば、 php.ini-development をコピーして php.ini を作成します。

php.ini を編集して mysqli 拡張モジュールを有効にする。

php.ini を編集して mysqli 関連の機能を使用できるようにします。まずはテキストエディタで php.ini を開いて、mysqli で検索してみます。

php5.6.3 では、894行目に ;extension=php_mysqli.dll という行がありました。

この行は先頭がセミコロン(;)になっており、コメントとして扱われています。今回は php_mysqli.dll を読み込めるようにしたいので、この行の先頭のセミコロンを次の通り削除します。

変更前。
;extension=php_mysqli.dll
変更後。先頭のセミコロンを削除して設定を有効にする。
extension=php_mysqli.dll

これで拡張モジュール php_mysqli.dll が有効になりました。しかし、プログラムを実行してみると Unable to load dynamic library 'C:\php\php_mysqli.dll とエラーが表示されて実行できないことがあります。

この場合は、再度 php.ini を編集して拡張モジュールのフォルダを指定します。

php.ini を編集して拡張モジュールのフォルダを指定する。

PHP は拡張モジュールが有効な場合、php.ini で指定された拡張モジュール用のフォルダを探しに行きます。しかし、php.ini の初期状態ではこの拡張用フォルダが正しく指定されていません。その為、php.ini をテキストエディタで編集して拡張モジュール用のフォルダを明示的に指定する必要があります。

テキストエディタで php.ini を開いたら、まずは先頭の行にフォーカスを移して extension_dir と検索してみます。Windows8 に PHP5.6.3 をインストールした環境では 739 行目に拡張用フォルダの設定が見つかりました。

この設定を有効にするために、先頭にセミコロン(;)を削除します。次の変更例は Windows での例なので、 linux など他の OS の場合は、それぞれの環境に応じて読み替えてください。

変更前
; extension_dir = "ext"
変更後(先頭のセミコロンを削除して設定を有効にした)
extension_dir = "ext"

このように extension_dir に ext を設定したことで、MySQL サーバーは拡張モジュールを探す際に、この ext フォルダを参照するようになります。

ちなみに、実際に PHP をインストールしたフォルダ内にある ext フォルダを覗いてみると、php_mysqli.dll が存在することがわかります。

この設定が完了したら、冒頭で紹介したサンプルプログラムを実行してみてください。

スポンサードリンク

トラブルシューティング

その他のカテゴリー一覧