ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2011年5月28日土曜日

PHPの文字化けとphp.iniとhtaccessとCGI版とか

こんにちは、モリモルです。

PHPですでに動いているサイトを
別サーバーに移行したときに、文字化けで困った対応メモ。

■問題点
フォームに入力した文字が確認画面で文字化けする。

■解決方法

http://www.beny.to/2008/05/mbstringencoding-translationon.html

おお、これだ!
「mbstring.encoding_translation」は「Off」にすればいいのね。

「mbstring.encoding_translation」は
ini_set()で変更できないのか、php.iniかhtaccessでやるのか。


htaccessだと、
「mbstring.encoding_translation Off」て書くのね。

あれれ、、htaccessで「Internal Server Error」が。。

CGI版PHPを利用する場合、.htaccessにて"php_value"、"php_flag"を利用して PHPの各種設定ができないんだ。

phpinfo();でみると、「Server API」項目が「CGI」じゃん。
ああ、このレンタルサーバーはCGI版なのですね。

お、CGI版だと、php.iniを設置できるのか。


「mbstring.encoding_translation 0」と書いたphp.iniを置いたら文字化けが解消されました。


試してないけど、htaccessで、php.iniの場所を指定できるみたい。
--------------------------------------------------------------
suPHP_ConfigPath /usr/home/morimoru/html/


以上、メモだからいいや。

2009年7月28日火曜日

マルチバイト文字の設定

こんにちは、モリモルです。

マルチバイト文字関数の設定をphp.iniではなく、アプリ実行時にやっているのですが、よくよく忘れる設定のメモ。

mb_internal_encoding   →  mb_strlen とか
mb_regex_encoding    →  mb_ereg とか
mb_detect_order   → mb_detect_encoding

2009年7月14日火曜日

mod_rewriteムズカシ

こんにちは、モリモルです。

mod_rewriteで、アクセス対象ファイルがある場合はルールを摘要しないみたいなのは、以下のようなるのですが、それがVirtualHostディレクティブでうまく動作しなかった際のメモ。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/(.*)$ /index.php?c=$1&a=$2 [QSA,L]


以下のようにしたらうまくいきました。

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1 [L]
RewriteRule ^/([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/(.*)$ /index.php?c=$1&a=$2 [QSA,L]


mod_rewriteが複雑で理解できてません。。
上記も間違っててるかも。。とりあえず動いたのでよしとします。うん。

2009年6月26日金曜日

__autoloadとPEAR Pagerでコケる

こんにちは、モリモルです。

smarty->cakePHP1.1->ruby->rails->cakePHP1.2->smartyという流れでsmartyに戻りました。

さて、ページ送りをつけるのに、cakeではPaginationなる便利なものがあるのですが、
フレームワークが使えないので、PEAR Pagerを利用してます。

アプリ全体で、__autoloadを利用していると、Pager::factoryで「Pager_Sliding.phpが見つからないよ!」とエラーになります。
Pager.phpのclass_existsの第二引数にfalseを入れて、__autoloadを抑制するとうまくいくようです。


if (!class_exists($classname, false)) {
include_once $classfile;
}