
ドットインストールのレッスンが、勢力的に追加されている。
PHPで実装する「もっと読む」 (全8回)
上記レッスンは、PHPとjQueryのAjax、TwitterのAPIを使う興味深い内容だ。
早速、実践しようと思ったが、PHP5.2以上が必要らしい。
ローカル開発環境の構築をレッスン通りに進めた場合、PHPのバージョンは5.1.6になる。このままでは、上記レッスンで使用する関数が使えない。
そこで、PHPとMySQLのアップデートを行ったので、その手順を備忘録として書いておく。MySQLのアップデートは、PHPのアップデートをするために必要になる。
※手順はrootユーザーで実行することを前提に書いている。
PHPのバージョンを確認
[root@localhost ~]# php -v PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:37) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
PHP関連パッケージのインストール状況を確認
[root@localhost ~]# yum list installed php* Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.yz.yamagata-u.ac.jp * extras: ftp.yz.yamagata-u.ac.jp * updates: ftp.yz.yamagata-u.ac.jp Installed Packages php.i386 5.1.6-27.el5_5.3 installed php-cli.i386 5.1.6-27.el5_5.3 installed php-common.i386 5.1.6-27.el5_5.3 installed php-devel.i386 5.1.6-27.el5_5.3 installed php-gd.i386 5.1.6-27.el5_5.3 installed php-mbstring.i386 5.1.6-27.el5_5.3 installed php-mysql.i386 5.1.6-27.el5_5.3 installed php-pdo.i386 5.1.6-27.el5_5.3 installed php-pear.noarch 1:1.4.9-6.el5 installed
EPELリポジトリのインストール
[root@localhost ~]# rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL [root@localhost ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm 取得中 準備中... ########################################### [100%] 1:epel-release ########################################### [100%]
Remiリポジトリのインストール
[root@localhost ~]# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi [root@localhost ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-8.el5.remi.noarch.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-8.el5.remi.noarch.rpm を取得中 準備中... ########################################### [100%] 1:remi-release ########################################### [100%]
yum-prioritiesのインストール
[root@localhost ~]# yum -y install yum-priorities ~省略~ Installed: yum-priorities.noarch 0:1.1.16-16.el5.centos Complete!
CentOS-Base.repoの修正
[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo
~省略~ [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basea rch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=1 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basea rch&repo=updates #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=1 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basea rch&repo=extras #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=1 ~省略~
上記を追記して上書き保存。
remi.repoの修正
[root@localhost ~]# vi /etc/yum.repos.d/remi.repo
[remi] priority=1 ~省略~
上記を追記して上書き保存。
MySQLのアップデート
[root@localhost ~]# yum -y --enablerepo=remi update mysql Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * base: ftp.yz.yamagata-u.ac.jp * epel: ftp.kddilabs.jp * extras: ftp.yz.yamagata-u.ac.jp * remi: remi-mirror.dedipower.com * updates: ftp.yz.yamagata-u.ac.jp remi | 2.5 kB 00:00 321 packages excluded due to repository priority protections Setting up Update Process Resolving Dependencies --> Running transaction check ~省略~ Dependency Installed: libedit.i386 0:2.11-2.20080712cvs.el5 mysql-libs.i386 0:5.5.20-1.el5.remi mysqlclient15.i386 0:5.0.67-1.el5.remi t1lib.i386 0:5.1.1-7.el5 Updated: mysql.i386 0:5.5.20-1.el5.remi Dependency Updated: mysql-server.i386 0:5.5.20-1.el5.remi php.i386 0:5.3.9-1.el5.remi php-cli.i386 0:5.3.9-1.el5.remi php-common.i386 0:5.3.9-1.el5.remi php-devel.i386 0:5.3.9-1.el5.remi php-gd.i386 0:5.3.9-1.el5.remi php-mbstring.i386 0:5.3.9-1.el5.remi php-mysql.i386 0:5.3.9-1.el5.remi php-pdo.i386 0:5.3.9-1.el5.remi Complete!
MySQLのアップデートを実行することで、PHPもアップデートされる。
PHPのバージョンを確認
[root@localhost ~]# php -v PHP 5.3.9 (cli) (built: Jan 10 2012 22:05:12) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
MySQLのバージョンを確認
[root@localhost ~]# mysql --version mysql Ver 14.14 Distrib 5.5.20, for Linux (i686) using readline 5.1
php.iniの用意
[root@localhost ~]# mv /etc/php.ini /etc/php.ini.old [root@localhost ~]# cp /usr/share/doc/php-common-5.3.9/php.ini-development /etc/php.ini
php.ini-developmentは、開発環境の推奨設定になっている(らしい)
この作業を行わなくてもレッスンを実践することはできるが、デフォルトのphp.iniではコードにエラーがあっても、エラーが出力されない設定になっている。
レッスン内でもよく見る画像のようなエラーが出力されないということ。
php.ini-developmentを使えば、出力されるようになる。
※php.iniを修正する方法もあるが、ここでは割愛。
php.iniの修正
[root@localhost ~]# vi /etc/php.ini
~省略~ [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = "Asia/Tokyo" ~省略~
セミコロンを削除し、”Asia/Tokyo”を追記して上書き保存。
php.ini-developmentを使った場合は、上記設定が必要。
詳細はマニュアルを参照。
httpdの再起動
[root@localhost ~]# service httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ]
php.iniの設定を反映させるために、再起動する。
my.cnfの用意
[root@localhost ~]# mv /etc/my.cnf /etc/my.cnf.old [root@localhost ~]# cp /usr/share/doc/mysql-server-5.5.20/my-medium.cnf /etc/my.cnf
デフォルトのmy.cnfをバックアップして、雛形をmy.cnfとしてコピーする。
雛形ファイルは複数あり、環境にあわせて選択する。
my.cnfの設定
[root@localhost ~]# vi /etc/my.cnf
~省略~ [mysqld] character-set-server=utf8 skip-character-set-client-handshake ~省略~ [mysql] default-character-set=utf8 ~省略~
上記を追記して、上書き保存。
<2012/01/23追記>skip-character-set-client-handshakeを追記。
文字化け対策として、設定しておいた方が良さそうだ。
もしくは、PHPでmysql_set_charsetを使う。
mysqldの再起動
[root@localhost ~]# service mysqld restart mysqld を停止中: [ OK ] mysqld を起動中: [ OK ]
my.cnfの設定を反映させるために、再起動する。
文字コードの確認
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
mysqlにログインしてUTF-8になっているか確認する。
※mysqlへのログイン方法はレッスンを参照
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
my.cnfの修正をする前はこうなっている。
このままでは日本語が文字化けする。
はまりポイント
my.cnfを修正してmysqldを再起動させても、バージョンアップ前に作成したデータベースのcharacter_set_databaseはUTF-8にならないため、文字化けしてしまう。
DB(データベース)を削除して作りなおせば、UTF-8で作成される。
バックアップ→DB削除→DB作成→復元の手順で、文字化けはしなくなる。
※バックアップ、DB削除、DB作成、復元の方法は、レッスンを参照。
setで設定することもできるが、mysqldを再起動させると設定が戻ってしまう。
おわりに
上記は、CentOS5.7で実践した時のメモである。
同じCentOSでも6の場合は作業内容が変わるので注意!
個人的にやっておいた方がいいと思っている手順であり、バージョンアップするだけなら必要ない手順も含んでいる。
関連記事:
ドットインストールのレッスン内容に沿ったローカル開発環境をWindowsで構築する方法
ドットインストールでプログラミングを学んでミニゲームを作ってみた
Comments (0)