人気ブログランキング |
(PHP)MySQLの関数を使おうとすると「Unable to load dynamic library」と怒られる

Windowsの開発環境上で、cakePHPでデータベースに保存するコントローラで下記のようなエラーが出ました。

[error] [client 127.0.0.1] PHP Fatal error: Call to undefined function mysql_connect() in C:(省略)\\cake\\libs\\model\\datasources\\dbo\\dbo_mysql.php on line 6

あれ? mysql_connect()が使えないのか?と思って、mysql_connect()だけ書いたPHPを置いて、PHP.iniでエラー表示を有効にして(display_errors = On)実行。

やはり Call to undefined function mysql_connect() となります。
Apacheの error.log を見てみるとPHPの起動時に下記のようになっていました。

PHP Warning: PHP Startup: Unable to load dynamic library 'D:\\Program Files\\PHP\\ext\\php_mysql.dll' - \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0

どうやら、php_mysql.dllがAapacheに読み込まれてないようです。

で、php.iniの extension_dir や extension=php_mysql.dll の設定も見直してみましたが問題なし。
(というより、インストーラでインストールしてるから問題あったら困るんですけどね。)

で、いろいろ探しているうちに、みつけたのがこちら
どうやら、MySQLのクライアントライブラリである libmysql.dll がWindowsのパスの通る場所においてないといけないみたいです。
自分の場合、libmysql.dll は既に、PHPのインストールフォルダ直下に用意されてました。
Sytem32にDLLおくのはいやなので、PHPのインストールフォルダに環境変数のPATHを通すことに。

注意点は環境変数でPHPのパスを通した後はOSを再起動すること。
自分の場合も再起動しないと反映されていませんでした。
by jehoshaphat | 2008-12-04 00:54 | PHP開発


<< (cakePHP)MySQL保... (PHP開発)PHP統合開発環... >>