PHP5.6 が EOL(3)
MySQL拡張からMySQLiへ移行しよう
PHP7へ移行するには、MySQL拡張からMySQLiへ移行しなければならない。修正規模を調べてみたら、こんな小さなBlogなのに mysql関数を使用している箇所は 73ファイルで 370行以上あった。これを全て mysqli関数に書き換える必要があるわけだけど、その前に MySQLiで DBコネクションが失敗するのを何とかしなければ。
手順は、
- MySQL DBをバックアップ
- "my.cnf"ファイルに"old_passwords=0"設定を追加
- MySQL DBを再起動
- パスワードを再設定
と言ったところかな。
MySQL DBのバックアップは週一回の定期バックアップが成功しているので、これで良しとした。
次は"my.cnf"への設定の追加。ところで、"my.cnf"(MySQLの初期設定ファイル)は何処にあるんだ?
$ /usr/local/mysql/bin/mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql-X.X.XX/etc/my.cnf ~/.my.cnf
|
この順番で"my.cnf"ファイルを探すらしいが、どこにも無かったので、"/etc/mysql/my.cnf" を作成し、以下のように書き込んだ。
その後、サーバ(Mac mini G4)を再起動し、起動したら以下のようにMySQLユーザのパスワードを再設定する。
$ mysql -u root -p
Enter password: ←パスワードを入力
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: X.X.XX MySQL Community Server (GPL)
Copyright (c) 2000, 201n, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('my_password');
Query OK, 0 rows affected (0.00 sec)
|
これで良い様子。確認するには、
mysql> SELECT * FROM `mysql`.`user`;
+--------------+------+-------------------------------------------+
| Host | User | Password |
+--------------+------+-------------------------------------------+
| localhost | root | *C56DD89366EAF9D514A72BF0C616CEA86A95CEF4 |
〜
+--------------+------+-------------------------------------------+
4 rows in set (0.01 sec)
|
横に長〜いので途中で切っているけど、Passwordのところにこのくらい長い文字列が表示されれば41バイトハッシュになっているそうです。
これで、
//connect db
$active_db = mysqli_connect($SQL_HOST,$SQL_U_NAME,$SQL_PASS,$SQL_DB);
$res = mysqli_connect_errno();
if($res > 0){
exit("MySQL接続に失敗しました。code=".(string)$res);
}
|
の部分がエラーにならなければ成功。今ウチのサーバ(Mac mini)ではMySQL拡張の mysql_connect() と、MySQLi拡張の mysqli_connect() の両方でコネクションしているが、どちらも成功している様子。
|