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を再起動すること。
自分の場合も再起動しないと反映されていませんでした。