my.cnf が行方不明......。(XAMPP の MySQL での文字化け対処法)

2008年6月10日 23:59 my.cnf が行方不明......。(XAMPP の MySQL での文字化け対処法)

正直、何ヶ月も前に対処したネタなので、うろ覚えなんですが、完全に忘れきってしまう前に、ちゃんとここに書いておこうと思います。

ローカルのテスト環境として導入した XAMPP の MySQL の内容が、なんだかやたらと文字化けすることが多かったので、色々と調べてみました。

とにかく下記のエントリが参考になりまくりました。
[MySQL] 文字化け問題を本気で直す - ヽ( ・∀・)ノくまくまー(2006-10-11)

まずは、上記エントリ通り、とりあえず現状の文字コード関連の設定を確認。
コマンドラインでやっても良いけど、phpMyAdmin の「MySQL のシステム変数」というメニューでも、同様の設定を確認することができるようです。

で、確認してみると案の定、

何も考えていないだけあって、"characterset" 関係が全て "latin1" になっている。

という状態。

で、これを何とかするには、設定ファイル /etc/my.cnf に、

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

という記述を追加すれば良いとのこと。
ただ、今回 MySQL を使っているのは UNIX/Linux 系の OS ではなく Windows なので、当然 /etc なんていうディレクトリはありません。

といわけで、色々とめぼしいフォルダを探し回って、my.cnf はどこにあるんだ、と漁っていたんですが、それらしきファイルがさっぱり見つからず。

そんな感じで無駄に時間が経過して、かなりハマっちゃっていた時に見つけたのが、下記のエントリでした。
XAMPPのMySQLの設定ファイルは?

このエントリ、書いておいて下さって本当にありがとうございます。めちゃくちゃ助かりました。
と、同時に凄い脱力感が......。
......短縮ダイヤルって。

つまりは、結論から言うと、 my.cnf は XAMPP をインストールしたフォルダ内の mysql\bin フォルダ内にあります。

が、 .cnf という拡張子は Windows では「短縮ダイヤル」の拡張子で、これは Windows を新たにインストールした際に誰もがまずは行なうであろう「フォルダオプション」の「登録されている拡張子は表示しない」の設定をオフにする、という設定を行なっていても、何故かしっかり非表示になるタイプの拡張子だったのでした。

そのため、エクスプローラー上では「my.cnf」ではなく、単に妙なアイコンと一緒に「my」とだけ表示されていた、と。
そりゃ見落とすわ......。orz

こういう失敗をしないためにも、「フォルダオプション」の「ファイルの種類」で、.cnf の拡張子を、個別に「常に拡張子を表示する」設定オンにしておきました。

後は、my.cnf をテキストエディタで開いて、前述の設定を [mysqld] の欄に記述して完了。

再度、phpMyAdmin で「MySQL のシステム変数」を確認すると、"characterset" 関係の設定が "utf8" に代わっていました。

そして文字化け問題も解決。めでたしめでたし。

しっかし、ほんとに Windows の「極力拡張子は表示しない」という無意味な努力は邪魔以外の何者でもないですね......。

ブックマークに追加する
関連するブログ記事
スポンサード リンク
カテゴリー
MySQL
タグ
my.cnf | MySQL | phpMyAdmin | RDBMS | Windows | XAMPP | 拡張子 | 文字化け

コメント(0) | トラックバック(0)

 

XAMPP で Windows 上に Webサーバー(Apache) と PHP と MySQL と FTPサーバー(Filezilla) と メールサーバー(Mercury) を一括でインストール

Windows上にPHPの開発環境を用意する上で、非常に便利な XAMPP の紹介です。

XAMPP を使えば、一括で以下の環境を Windows 上に用意することができます。

  • Webサーバー(Apache)
  • PHP
  • MySQL
  • phpMyAdmin
  • FTPサーバー(FileZilla)
  • メールサーバー(Mercury)

それぞれを別個のサイトからダウンロードしてインストールしなくても、XAMPPだけで、これらの開発環境が揃うわけです。
便利な世の中になったもんですよねー。

というわけで、以下導入手順です。

1. XAMPP をダウンロードする

XAMPP 導入手順(1)

apache friends - xampp for windowsへアクセスし、XAMPP をダウンロードします。

 
XAMPP 導入手順(2)

画面を下の方にスクロールしていくと、ダウンロードサイトへのリンク一覧が出てきます。

特にこだわりや理由がなければ、インストーラをダウンロードするのが手っ取り早いと思います。

「XAMPP Windows版 〔ベーシックパッケージ〕」の「インストーラ」のリンクからダウンロードします。

 

2. XAMPP をインストールする

XAMPP 導入手順(3)

ダウンロードした XAMPP インストーラを起動すると、言語選択のダイアログが表示されます。

「Japanese」を選択して「OK」をクリック。

 
XAMPP 導入手順(4)

「セットアップウィザードへようこそ」という画面が表示されるので、「次へ」をクリック。

 
XAMPP 導入手順(5)

インストール先のフォルダを指定します。
左記画面の例では、「C:\xampp」を指定しています。

ここで指定したフォルダに、 XAMPP のコントロールパネルとか、Apache とか MySQL とか PHP とか、その他もろもろが全部インストールされます。

指定したら「次へ」をクリック。

 
XAMPP 導入手順(6)

オプション設定画面。

「Apache をサービスとしてインストール」「MySQL をサービスとしてインストール」「FileZilla をサービスとしてインストール」にチェックを入れておくと、これらを Windows サービスとして利用できるので、便利です。

ただし、既にWindows 上でWebサーバーとして IIS を利用している場合等は、一旦 IIS を停止しておかないと、サービスとして Apache がインストールできなかったり、色々と不具合があるかもしれません。

チェックを入れたら「インストール」をクリック。

 
XAMPP 導入手順(7)

インストールが始まります。

そこそこ時間がかかるので、しばらく待ちましょう。

 
XAMPP 導入手順(8)

インストール完了画面。
これでXAMPP のインストールは完了です。

「完了」をクリック。

 

3. コントロールパネルを触ってみる&セキュリティ関連の設定

XAMPP 導入手順(9)

インストールが完了すると、「XAMPP コントロールパネルを今すぐ起動しますか?」というダイアログが表示されます。

「はい」をクリック。

 
XAMPP 導入手順(10)

XAMPP のコントロールパネルが起動します。

この手順通りにインストールしていれば、「Apache」「MySQL」「FileZilla」が「起動」の状態になっているかと思います。

各モジュールの右側にある「停止」または「停止中」ボタンをクリックすれば、それぞれのサーバーを停止できます。

 
XAMPP 導入手順(11)

さて、実際にApache が Webサーバーとして動いているのか、確認してみましょう。

ブラウザを立ち上げて、http://localhost/ あるいは、http://127.0.0.1/ へアクセスしてみます。

左記のような画面が表示されれば、Apache は正常に動作しています。

XAMPP の Web管理画面に入るため、右下の「日本語」をクリックします。

 
XAMPP 導入手順(12)

XAMPP の Web管理画面です。

とりあえず、最低限のセキュリティ設定を行なうため、左のメニューから「セキュリティ」をクリックします。

 
XAMPP 導入手順(13)

現在のセキュリティ関連の状態がどうなっているか、一覧で簡単に教えてくれます。
ほとんどの項目が「要注意」になっているかと思います。

そのテーブルの下に http://localhost/security/xamppsecurity.php へのリンクがあるので、それをクリック。

 
XAMPP 導入手順(14)

MySQL の root のパスワードを設定するフォームと、XAMPP の Web管理画面に .htaccess で Basic認証を設定するフォームの二つが表示されます。

とりあえず、まずは MySQL の root のパスワードを設定しましょう。

任意のパスワードを入力し、phpMyAdmin の認証方法(初期設定では Cookie)を選択。

フォーム下部のチェックボックスにチェックを入れると、設定したパスワードを、自動でテキストファイルに保存しておいてくれます。
まあ、その行為自体がセキュリティ的にどうなんだ、的な感じではありますので、その辺はお好みで。

そして「パスワードを変更しました」というボタンをクリック。

 
XAMPP 導入手順(15)

MySQL の root のパスワードを正常に設定できれば、「root のパスワードを変更しました。設定を有効にするために、MySQL を再起動してください。」と表示されます。

 
XAMPP 導入手順(16)

XAMPP のコントロールパネルを再度開きます。

MySQL が「起動」状態になっているはずなので、一旦「停止」ボタンをクリックします。

 
XAMPP 導入手順(17)

MySQL の「起動」状態が消えます。

再び「開始」ボタンをクリックして「起動」状態に戻します。

これで MySQL の再起動は完了。

 
XAMPP 導入手順(18)

再び、XAMPP の Web管理画面のセキュリティ設定フォームの方に戻ります。

次は、Web管理画面に .htaccess で Basic認証をかけるための設定を行ないます。

Basic認証については、「.htaccessによるBasic認証のかけ方」「.htaccess で特定のファイルのみにBasic認証を設定する方法」等も参考になれば。

フォームに、Basic認証に利用するユーザー名とパスワードを入力します。

MySQL の root のパスワードを設定した際と同様に、チェックボックスにチェックを入れると、ユーザー名とパスワードをテキストファイルに保存してくれますが、こちらもお好みで。

入力したら「安全な XAMPP ディレクトリを作成してください」というボタンをクリック。

 
XAMPP 導入手順(19)

「成功: XAMPP ディレクトリ制御が成功しました! 全ユーザのデータは、以下のファイルに格納されました:」と表示されたら、設定完了です。

 
XAMPP 導入手順(20)

以後、XAMPP の Web管理画面にアクセスすると、左記画像のように、Basic認証のダイアログが出るようになります。

とりあえず、これで最低限の設定は完了です。

 

なお、 XAMPP をインストールしたフォルダ内に「htdocs」というフォルダが作られています。
このフォルダ内にファイルを放り込めば、「http://localhost/***.html」等の URI でアクセスできます。

ブックマークに追加する
関連するブログ記事
カテゴリー
MySQL | PHP | Web制作技術
タグ
.htaccess | Apache | Basic認証 | FileZilla | FTP | Mercury | MySQL | PHP | phpMyAdmin | SMTP | Windows | XAMPP | アクセス制限 | オープンソース

コメント(0) | トラックバック(0)

 

OpenPNEでプロフィール項目を追加しても管理画面に表示が反映されない件

ちょっとSNS用のCMS「OpenPNE」をインストールする機会があったんですが、つまらないところでハマった(というほどでもないけど)のでメモ。

とりあえず普通にインストールは完了し、管理画面にログイン。

試しにプロフィールの項目を追加してみようと思ってやってみたら、何度やっても追加されない。

おっかしいなぁ、と思ってMySQLデータベースの中身を見てみたら、テーブル「c_profile」に、普通に新規に追加したプロフィール項目のデータは入ってる。

ということは、どうも管理画面側でデータベースを select した際に、なんらかの原因でデータを引っ張ってこれてないんだな、と目星がついたので、該当する箇所のPHPソースコードを元にざっと grep してみたところ、あっさり原因判明。

OpenPNEの設定ファイル「config.php」には、

// MySQL ヒント使用設定
define('OPENPNE_USE_MYSQL_HINT', true);

という箇所があるんですが、「MySQL ヒント」って何だ?と思いつつ、とりあえずデフォルトで true になってるからそのままでいいや、と思ったら、そこが原因だったらしい。

先ほどの管理画面のプロフィール項目のデータを、テーブル「c_profile」から select してくる際に、MySQL ヒント使用設定(OPENPNE_USE_MYSQL_HINT)が true だと、SQL文の中に「/*! */」で括られたコメントを挿入してるみたい。

で、何故かそのコメントが入ってると、データを引っ張って来れなくて、データベースにはちゃんとデータが入っているのに、管理画面には項目が表示されない、ということになっていたようです。
なんでそのコメントが入ってると駄目なのかは不明(つまり原因判明と言いつつ、本当の意味では原因は判明してないわけです……)。

まあ、とにかくこの「MySQL ヒント使用設定」をオフにすれば、解決しました。

// MySQL ヒント使用設定
define('OPENPNE_USE_MYSQL_HINT', false);

けど、この「MySQLヒント」って言うのは何なんだろう?
ググっても特にそれらしきものは引っかからなくて、よくわかりません。
誰か教えて、エロい人。

ブックマークに追加する
関連するブログ記事
カテゴリー
MySQL | OpenPNE
タグ
CMS | MySQL | OpenPNE | PHP | SNS | オープンソース

コメント(0) | トラックバック(0)

 

MySQLにdatetime型で保存したデータをUNIX TIMEで取り出すUNIX_TIMESTAMP関数

MySQLでデータを取り扱う際、日付・時刻関連のデータはdatetime型で管理するようにしています。
(余談ですがPostgreSQLではtimestamp型を使っているので、MySQLをはじめて使ったときに、何も知らずに同じようにtimestamp型を使って痛い目にあった経験があります......)。

datetime型で保存したデータは「YYYY-MM-DD hh:mm:ss」という形になるわけですが、いざこのデータをperlやPHPで取り扱う、となった際に、そのままの形だと単なる文字列なので、比較処理や加算・減算なんかをする時にちょっと面倒なんですよね。
一度UNIX TIME(1970年1月1日0時0分0秒からの経過秒数)に戻してから処理をするのが一般的です。一手間かかるわけですね。

しかし、MySQLには非常に便利な「UNIX_TIMESTAMP」という関数があって、あっさりとその問題を解決できます。

例えば、テーブル「customer_data」から、顧客の生年月日を格納したフィールド「birthday」のデータを取り出す際、通常なら、

select birthday from customer_data;

という風にやるわけですが、これだと取り出したデータは「1976-05-06 12:34:56」みたいな感じになってます。

そこでUNIX_TIMESTAMP関数を使って、

select unix_timestamp(birthday) as u_birthday from customer_data;

とやると、取り出したフィールド「u_birthday」のデータは「200201696」という感じで、1970年1月1日0時0分0秒からの経過秒数(この例の場合は1976年5月6日 12:34:56までの経過秒数)になります。

逆に、UNIX TIMEで保存したデータを、datetime型に変換するための「FROM_UNIXTIME」という関数もあります。

こちらは、「200201696」のような形で保存されているデータを取り出す際に、

select from_unixtime(u_birthday) as birthday;

とやれば、「1976-05-06 12:34:56」という風に変換されて出てきます。

ブックマークに追加する
関連するブログ記事
カテゴリー
MySQL
タグ
datetime | FROM_UNIXTIME | MySQL | RDBMS | SQL | UNIXTIME | UNIX_TIMESTAMP

コメント(0) | トラックバック(0)

 

このブログについて

阿部辰也

Webコンサルタントやシステムエンジニア、執筆業などをやっている、阿部辰也のブログです。
Web技術系のTipsから仕事の話、趣味の話まで色々と。
人生は所詮生まれてから死ぬまでの壮大な暇つぶし。
だったら有意義に暇をつぶして生きましょー。

このブログのサイトマップ
このブログのはてなブックマーク数

Feed/RSS購読

スポンサード リンク

はてなブックマーク

タグクラウド