- ベストアンサー
ディレクトリ構造と文字化け対策
- ディレクトリ構造の相談として、ドメイン設定によりwww/hoge/controller/がドキュメントルートに設定されています。smartyを使用し、templateやimgディレクトリはcontrollerと同階層にあります。ドキュメントルートにcontrollerを置くのはおかしいか、それとも1つ上が妥当か悩んでいます。
- 文字化けの問題に関して、ロリポではsjis対応できたため、データベースの文字コードもsjisにしました。しかし、さくらサーバーでは文字化けが発生しています。PDOを使用したSQL実行によって、文字列が消えるような書き込みの問題が発生しています。mb_covertを使用して文字コードを変換する方法について教えていただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
■ディレクトリ構造の相談 さくらサーバだったら、 /home/youraccount/www が、Webルートになると思います。 /home/youraccount/controller /home/youraccount/smarty /home/youraccount/template などとおいて、 /home/youraccount/www/index.php /home/youraccount/www/img とおいてやって、 index.php <?php require_once './controller/example.php'; ?> などとして、controllerディレクトリ内にあるクラスなどライブラリを呼んでくるのが一般的ではないでしょうか。 ■文字化け 一番簡単なのは、データベースの文字コードに合わせてスクリプトを書くことではないでしょうか。 さくらインターネットのMySQLは、EUC-JPになっていたと思います。 もしくは、SSHでサーバに入って、alter databaseで文字コードを変えるとか。(まだデータが入っていないなら。) どうしてもスクリプト側で処理する必要があるということであれば、 PDOにINSERTしたい文字列を入力するときに変換をかける感じです。 mb_convert_encodingの使い方は、 <?php $value = mb_convert_encoding($original_value, 'eucjp-win', 'sjis-win'); ?> といった感じです。eucjp-winやsjis-winは、Windowsの機種依存文字に対応する文字コード形式です。 とりあえず、MySQL関連の文字化けに関するノウハウは、バッドノウハウも含めて膨大にあるので、 まず一度鵜呑みにしないで色々調べてみたほうが良いかもしれません。
お礼
ご回答ありがとうございます。 かなり理想的なお答え感謝致します! ■ディレクトリ やはりその構成が普通ですよね… 勉強がてらなので、我流なフレームワークでして(笑) www/index.phpでどう作っていいのか正直イメージがわかないです(汗) フレームワークの基盤ファイルとdisplay用のcontrollerファイルを読み込むのかなぁという感覚ですが… もっと勉強が必要ですね! ■文字化け モバイルなので、DBへ入れるときはUTF-8、吐き出すときはShift-JISかなと思ったのですが、そもそもPDOのどこに入れればいいのかわからず… 調べて色々なやり方があったのですが、どれもちょっと違うのかなぁという印象でしたが、ご教示いただいた感じでやってみたいと思います! この度は誠にありがとうございました!