XAMPPでローカルサーバー構築2017-09-20
レンタルサーバのPHPをバージョン5から7に変更するにあたり、テスト環境として自宅PCにWEBサーバを構築した。久しぶりにXAMPPを使ったら色々とトラブったので覚書。(※前の記事から独立した)
先ずは、FTPソフトでリモートファイルをローカルにダウンロード。これは個人的な事情だが、自宅PCの環境(OSやHDD)がここ数年で何度か新しくなっているので、WEBサーバーにあるファイルがローカルには殆ど無い。よってリモートからダウンロードするのに量やサイズが大きすぎて、FFFTPが何度も止まってしまった。
次はXAMPPをインストール、これ自体はウイザードに従うだけなので簡単。FileZillaやTomcatは取り敢えず不要なので除外し、Apache(PHP7を含む)とMySQLだけインストールした。
MySQLのユーザー登録
ここからが曲者。先ず、リモートで運用しているphpMyAdminのフォルダを一式DL。ローカルホストでアクセスしたら、何時もリモートサーバで使ってるユーザーでログイン出来ない。よく考えたらこれは当然で、そんなユーザーが真っさらのMySQLに居るはずない。しかし中々それに気づかず、設定ファイルで一生懸命パスワードの設定を弄ってしまった(;´∀`)
そもそも、XAMPPにはデフォルトでphpMyAdminが付いており、コントロールパネルのMySQLの「Admin」ボタンを押すだけでローカルのphpMyAdminに飛んでくれる。そこでrootかなにかでログインし、何時もリモートで使ってるユーザーを新規登録すればよかったのだ。
そこでmysqlというデータベースのUSERテーブルで、rootユーザを複製して名前を何時ものユーザーに変えたらOK・・・と思いきや又してもログイン出来ない!権限を変えてもダメなので、このユーザー(レコード)は一旦削除して、今度は普通にメインメニューから、ユーザー>ユーザーを追加したら上手く行った。USERテーブル以外にも何か書き換わるのかもね。
データのインポート
次にコンテンツであるデータをリモートからローカルに引っ張ってくる。やり方は、リモートのphpMyAdminにログインしてデータをエクスポートし、吐き出されたSQL文をローカルのphpMyAdminでインポートする。
当然DB一全体を一気に移動するのは無理なので、幾つかのテーブルを選んでエクスポートするも、インポート時に容量オーバーでエラーになってしまう。だから更に細切れにしてエクスポート→インポートを繰り返した。
しかしついに単独で容量オーバになるテーブルがあったので、結局本家のFAQに従いphpの設定を変更。具体的にはphp.iniのupload_max_filesize
を2MBから4MBに変更した(post_max_size
は最初から8MB)。考えたら、最大2Mは小さいよね?因みにリモートの設定は10Mになってた。
文字化けの修正
ようやく独自システムのWebページがローカルで立ち上がったら、お約束の文字化けが発生。
そこで先ず、phpMyAdminに元々あった幾つかのデータベースの文字コードが殆どラテン系だったので、utf_general_ciに変更してみるが改善せず(もちろんApacheもMySQLも立ち上げ直した)。
次にApacheの設定ファイルhttpd.confを見るも、文字コードに関係しそうな行が見つからずひとまずスルー。またPHPの設定を確認するもdefault_charsetはちゃんとUTF-8になっていた。
そこでMySQLの設定ファイルmy.iniの## UTF 8 Settings
以下の5行くらいのコメントアウトを全て外してみたら、見事文字化けがなくなった。DBやテーブルの文字コード変更が必要だったかは判らないが、文字化けしたら大体MySQL設定が怪しいということかな。