SPOTブログ

2015/12/03

オープンソースの顧客管理システムL03をMySQLi化してphp5.5以降にも対応させる

phpからMySQLデータベースに接続する関数としてかつて主流だったmysqliモジュールがPHP5.5移行からはdeprecated(非推奨)となっています。しばらくPHP5.4でつかい続ければ問題ないかなーと思っていたのですが、今日、お名前ドットコムの共用サーバーSDにてPHP5.4が使えなくなってしまっていました。

サポート情報を見てみると、11/5に告知されていたようなのですが、メールも届いていないですし、いつの間にかPHP5.4だったのか勝手に5.6に設定変更されてしまっていて、気づきました。

これで困ったのが、フリー・オープンソースの顧客管理システムL03が動かなくなってしまったことです。

エラー内容を見てみると、mysql_connect()等が推奨されなくなり、エラーが出るようになったことで動かなくなってしまったようです。

最初にこの顧客管理システムL03をご紹介したのは2011年だったのですが、未だに検索からの流入も有るため、それなりに使われているのだと思います。そこで今回は、php5.5移行でもこのCRMを使えるようにする修正内容をご紹介します。

application/library/connectionmysql.phpを修正

mysqlとの接続関連の記述が有るのがこのapplication/library/connectionmysql.phpというファイルになりますので、コチラを修正します。

修正内容

mysql〜という関数をmysqli〜に置き換えるのですが、必要な引数の順番や、数が違っていたりしてややこしいので、一箇所ずつ修正するよりもこのままコピペしたほうがわかりやすいと思います。

主な変更点

mysql_connect()

mysql_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD);

mysqli_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD,DB_DATABASE);

になります。mysqli_connectになると4番目の引数としてデータベース名が必要になるため忘れずに追加します。

mysql_select_db()

mysql_select_db(DB_DATABASE);

mysqli_select_db($this->handler,DB_DATABASE);

になります。こちらは、データベース名が1つ目の引数だったのが、mysqli_connect()が引数1に必要になっています。今回は$this->handlerがmysqli_connect()にあたりますのでそちらを追加します。

mysql_query();

mysql_query(“SET NAMES utf8″, $this->handler);

mysqli_query($this->handler,”SET NAMES utf8”);

になります。引数の順番が入れ替わっています。

PHPのバージョンアップは毎回大変

以前php4系から5系に移行した時も勝手にバージョンが変わってしまい画面が真っ白になってしまったサイトが多発してしまったので、大変だったのですが、今回もまた気づかないところでトラブルが起きなければ良いのですが・・・。ご参考下さい。