グローバル設定で日本語が削除される  【解決済み】

質問全般・改善要望
返信する
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

グローバル設定で日本語が削除される  【解決済み】

投稿記事 by kazuike »

今までこういう現象に出くわしたことがなかったのですが、
今回初めて使ったサーバで、
グローバル設定で保存を行うと、サイト名やメンテナンス中メッセージに含まれる日本語が削除される。
という現象が起こりました。
リソースの保存では、リソース名やタイトル、要約、内容など、どこに日本語を入れても問題ありません。

直接、phpMyAdmin等で日本語を入れると、表示はちゃんとでますが、
グローバル設定で保存を行うと、やはり日本語が消されます。

このサーバの「REPLACE INTO」の動作がおかしいのかと思ったりしましたが、
インストール時のsetup.sqlで「REPLACE INTO」を使っている、ロール名や説明はちゃんと日本語で入っています。
もしかして、「SqlParser」と「DBAPI」で微妙に違うとか?

環境は、以下です。
modx:1.0.1J
PHP:5.1.6、もしくは、それ以降(phpinfoが表示できないので詳細不明、できればまとめて問い合わせたいのですが)
MySQL:5.1.39-log

何か、ヒントになりそうな情報ありませんでしょうか?
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: グローバル設定で日本語が削除される

投稿記事 by kazuike »

続きです。

PHPのバージョンは、5.3.0でした。
念のため、modx1.0.1Jについて、
splitなど、
PHP5.3から非推奨で使ってはいけない(E_DEPRECATEDエラーになる)ものがあるか調べてみました。
(バージョン5.3未満などの条件限定で使っているものは省いています)

コード: 全て選択

▼split
manager\includes\datefunctions.inc.php(9): 	list ($day, $month, $year) = split ("-", $date);

▼dl
manager\actions\files.dynamic.php(309): 				if(!@dl('php_zip.dll')) return 0;
manager\actions\files.dynamic.php(311): 				if(!@dl('zip.so')) return 0;
manager\includes\veriword.php(102):                 @dl('php_gd2.dll');
manager\includes\veriword.php(105):                 @dl('gd2.so');
manager\media\ImageEditor\editorFrame.php(19): 		@dl('php_gd2.dll');
manager\media\ImageEditor\editorFrame.php(22): 		@dl('gd2.so');

▼mysql_escape_string
assets\plugins\managermanager\functions\utilities.inc.php(136): 		$arr[$k] = "'".mysql_escape_string($tv)."'"; // Escape them for MySQL
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: グローバル設定で日本語が削除される

投稿記事 by kazuike »

さらに続きです。

残念ながら、グローバル設定だけではなく、
テンプレート名等、いろいろなところで、日本語が消えます。
どちらかというと、リソースの保存では、たまたま日本語が保存できたと言った方がよさそうです。 :cry:
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: グローバル設定で日本語が削除される

投稿記事 by kazuike »

解決しました。
mbstring.internal_encodingが「EUC-JP」だったので、
次の1行を「.htaccess」に足したら治りました。

コード: 全て選択

php_value	mbstring.internal_encoding	UTF-8
最近使っていたサーバは、
mbstring.internal_encodingが、設定なしか、utf-8のものばかりだったので、
こういうところに頭がいきませんでした。 :oops:
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
返信する