phpの設定ファイル /etc/php.ini のmbstring について
XOOPSを設置する際にはPHPの設定ファイルである
/etc/php.iniの設定ファイルの調整は必須である。
その中でも文字化けなどの対策mbstringはいかがな設定にしているか?
を検証してみよう。
-------------------------------------------------
[mbstring]
; 国際化文字で表現される言語
mbstring.language = Japanese; 内部/スクリプトのエンコーディング
; 内部エンコーディングとしては使用できないものがあります。
; (たとえば BIG5, ISO-2022-*)
; (SJIS : ビルド時に --enable-zend-multibyte が指定されない場合。Vine 版では
; 組み込んであります)
;mbstring.internal_encoding = UTF-8
mbstring.internal_encoding = EUC-JP; HTTP 入力のエンコーディング
; "auto" は、"ASCII,JIS,UTF-8,EUC-JP,SJIS"に展開されます。
mbstring.http_input = auto; HTTP 出力のエンコーディング。ここを pass 以外にする場合は、output_handler
; を mb_output_handler にしておく必要があります。
;mbstring.http_output =
mbstring.http_output = pass
; mbstring.internal_encoding にしたがって自動的にエンコーディング変換を行う。
; この設定が On の場合、入力文字は内部エンコーディングに変換されます。
; 注意:ライブラリやアプリケーションを他にも配布する予定がある場合は、互換性
; に問題が発生するのでこの設定を有効にしては *なりません*。
mbstring.encoding_translation = Off
mbstring.script_encoding = auto
; エンコーディングを自動判別する場合の順序
; auto means
mbstring.detect_order = auto; エンコーディングを変換できなかった場合に使用する代替文字
mbstring.substitute_character = none; シングルバイト用の関数を mbstring 関数群でオーバーロード(上書き)する。
; mail(), ereg()などをそれぞれ mb_send_mail(), mb_ereg() などに置き換える。
; 0,1,2,4 およびそれらの組み合わせが指定可能。たとえば 7 はすべて置き換える。
; 0: 置き換えなし
; 1: mail() 関数を置き換える
; 2: str*() 関数を置き換える
; 4: ereg*() 関数を置き換える
;mbstring.func_overload = 0
-------------------------------------------------
概ね上記設定で文字化けは起こらないはず。
■また、XOOPSのZenCartモジュールなどテーブル数の多いモジュールを
XOOPSモジュールとしてインストールする際にタイムアウトなどのエラーなどにより
インストールできない現象が起こる場合は
Resource Limitsの設定を見直そう。
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;max_execution_time = 60 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 32M ; Maximum amount of memory a script may consume (8MB)
■PHPデバッグモードをONにしても「Warring」メッセージが見つからず、
XOOPSにおいて画面が真っ白になる不具合の調整の参考になれば幸いです。
PHP設定ファイルの/etc/php.ini中の253行目
memory_limit = 32M ; Maximum amount of memory a script may
consume (8MB)
の「memory_limit 」の値はデフォルトでは「8M」になっている。
「16M」へ修正すると良いとのことでしたが
当方ではメモリーに余裕があったので「32M」へ変更。
不具合を解消した。
【参考URL】
XOOPS本家 http://www.xoops.org/modules/smartfaq/faq.php?faqid=80
他 sourceforge.jpのHELP/トラブルシューティングで解決策あります
http://xoops.sourceforge.jp/wiki/xoops2/
■FFFTPなど、FTPソフトの設定で「ファイル名の大文字を小文字に変換」するようになっていると、
一部のファイルのincludeに失敗して真っ白画面になる。
■FTPなどでアップロードする時に、アスキーでなくバイナリで転送している。
■XOOPS1.3系からアップグレードの場合、サードパーティ製モジュールがXOOPS2で動かなくて真っ白画面になる。
■cache, uploads, template_c フォルダのパーミッションが777になっていない
■Redhat linuxでphp-mysqlがインストールされていなかった。
■Redhat Linux 7.3や9 では、rpmでは問題がでるようなので、
httpdとphpをソースから入れるとよいようです。
詳しくは公式のフォーラムで検索して下さい。
■2.06まででヘッダしか返らず、本文がなにも返ってこない場合(RSSやBlogのトラックバック等)は
http ヘッダによって正常に処理されない の可能性があります。
■メモ帳や、ホームページビルダーなどで開いた時にEUCのファイルをS-JISで保存してしまったため、
真っ白になる。EUC-JPが扱えるエディターなどを使いましょう。
■gzip 圧縮がオンになっていると、環境によってはモジュールのインストール画面が真っ白になることがある。
■AuthモジュールでCGIを実行しようとした時。セーフモードでPHPが動作している場合は
PHPがエラーとなって実行できません。(CGIがサーバエラーを出している場合はXOOPSのヘッダ・フッタは表示されます。)
■PHPの動作メモリが8Mだと足らなくて真っ白になる場合があります。php.iniで、
「memory_limit = 16M」などとすると解消する場合があります。
■php.iniに「extension=mysql.so」が無かった。