現在フレームワークの勉強中。
cakePHPを使おうとしていましたが、最初に「http://localhost/cake/sample/」をURLに打ち込んでも表示されるはずのページが表示されない。
http://localhost/cake/sample/index.phpと打ち込んだところ、一応表示されるもののCSSが効いていないなど、その後も不具合多発。
現在の開発環境がまずいのかな?と思い、1から環境を整えることにしました。
まずはxamppをインストール。インストその他の設定はうまくいっていたのですが、MYSQLにデータを打ち込んでも文字化け。
「こんにちは」入力してもと「?????」と出てきてしまう。
このような不具合はPHPを勉強し始めたときもあり、MYSQLで出力した文字化けが直せなかったためApacheとMYSQLを個別にインストールしていました。
※出力と入力は両方utf8にしていたと思います。
そこで困ったときのgoogle先生ということで、以下のことをしました。
———————————————————————————————————
・環境変数 PATH に 「c:\xampp\mysql\bin」を追加(「スタート」→「コントロールパネル」→「環境変数」)
・mysql -u root -p パスワード でmysqlを起動
・ユーザ(ユーザ名+パスワード)権利を追加mysql> create user ‘ユーザ名’@’localhost’ identified by ‘パスワード’;
・データベースの作成 mysql>create database データベース名;
・作ったデータベースに権限をつける mysql> grant all on データベース名.* to ‘root’;
・mysql.iniの[mysqld] に
character-set-server = utf8
skip-character-set-client-handshake
[mysql] に
「default-charactser-set=UTF-8」を追加。
ここでxamppコントロールパネルのmysqlを再起動させようとstopを押したら、そのまま動かなくなった。
どうやらiniファイルの設定を変えたのが良くないみたいだ。
ini以外の方法がないかと調べていると「my.cnf」というファイルの設定を変更する手もあると分かった。
下記はmy.cnfについて。
・/etc/my.cnfを書き換える↓
・UNIX/Linux 系の OS ではなく Windows なので、/etc なんていうディレクトリは無い。↓
・win系は短縮ダイアルになっている。そのため拡張子なしのmyとだけ表示されたファイルがある。
・しかしxampp/mysql/binを探しても「my」というファイルは無い。
・そこでこれまでの環境で使っていたmy.cnfを使うことに。
しかしうまくいかない。
どうしたらいいんだ!と迷っていると、先日手にした参考書「cakephp1.3によるwebアプリケーション開発」の付属CDに、1つ前のバージョン「xampp1.7.3」が入っていた。
早速インストールして上の手順を行ったら、動いた。
1.7.4はなんだったんだ・・・。
以下はそのほかトラブルについてやったこと。
■PHPが文字化けしないおまじない
・php.iniを訂正。下記コロンとってやる
——————————————-
1 ;mbstring.language = Japanese
2 ;mbstring.internal_encoding = UTF-8
3 ;mbstring.http_input = auto
4 ;mbstring.http_output =UTF-8
5 ;mbstring.encoding_translation = On
6 ;mbstring.detect_order = auto
7 ;mbstring.substitute_character = none
8 ;mbstring.func_overload = 0
——————————————-
■phpが使えない
php.iniのshort_open_tag = OnがOffになってた。→Onにする。
■mysqlへコマンドプロンプトから入力したら文字化けした
phpmyadminはOKだった。なので、コマンドのインプットとアウトプットの文字コードがおかしいのだろうと考え、
SET NAMES SJIS;
と入力してリターン。これでOK。
よかった。
———————————————————————————————————
cakeも動くし、とりあえず開発環境がととのった。
xamppはインストールは楽だが、バージョンによって設定がうまくいかないときがある。
なんとかしてほしい。
それとも自分のやり方が悪いのだろうか?
今回のエントリが誤解を与える内容でしたら、どなたか教えて下さい。