PHP7で「PHP Extensions Not Found => mysql」というエラー

  • 投稿 : 2016-01-14
php7-mysql01.png

PHP7に変更すると「PHP Extensions Not Found => mysql」というエラーがでるものがあって、どうすればよいか?って話です。

ext/mysql 拡張の廃止
5.5 で非推奨になった mysql_ 系の関数が取り除かれました。代替となる PDO や mysqli が用意された現在でも古い参考書に惑わされて使用する人が多かったので良い変更だと思います。数が多すぎるので廃止となった関数は列挙しませんが「mysql_」で始まっている関数は今後使用できなくなります。前述の PDO や mysqli 系を使って下さい。
[PHP]PHP7.0での変更点とアップグレード時の対応 | PHP Archive

まず、PHP7からmysql_ 系の関数(MYSQLの拡張機能)が廃止されていて使えないってことでこのエラーが出ているようです。で、逃げ道はないのか?というとない模様です。

地道に、 mysql_ 系の関数を mysqli_ 系の関数に置き換えていくしかないようです。

mysql_xxx は非推奨で将来のバージョンで削除されるので mysqli_xxx を使ってね … ということなので、書き換える。

例えば単純に mysql_connect() を mysqli_connect() に書き換えれば良いかと思ったら、引数が増えていたり、引数の順番が違っていたりするので結構面倒くさいのね。
【PHP】関数 mysql_... を mysqli_... へ書き換える。 - freefielder.jp

置き換える方法は、引数などが微妙に変わっているので、地道に置き換えていくしかないと・・・。

PHP: mysql_connect - Manual
PHP: mysqli_connect - Manual

PHP: mysql_select_db - Manual
PHP: mysqli_select_db - Manual

PHP: mysql_query - Manual
PHP: mysqli_query - Manual

PHP: mysql_error - Manual
PHP: mysqli_$error - Manual

引用先に出てきた関数だけリンクを貼っておきます。
mysql_でgrepをかけて、地道に同じコードになるように書き換えるしかないような雰囲気ですね。

実際に地道に置き換えで行くと、ちゃんと動作しました。引数の順番とか指定が違うだけで機能的には一緒なので多くの場合はそれで動作すると思います。
スポンサーリンク
タグ#PHP