[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:26620] Re: simpleXMLのxpathでセグメンテーション違反



いずみです。

くわむらさん、ありがとうございます。
PHP に関する質問だったのでひょっとして 
場違いな投稿と受け取られたんじゃないかと
実は不安になっていました。

> くわむらです
> 
> 内部エンコーディングは何になってますでしょうか?

内部エンコーディングはデフォルトの設定が
EUC-JP なので処理を始める前に冒頭で
 mb_internal_encoding('UTF-8');
として変更しています。

※前の投稿ではこれを
 mb_convert_encoding('UTF-8')
と書いてしまいましたが、書き間違いです。
すみません。今回作ったスクリプトでは
---------------------------------------------
(1) UTF-8 で書かれたXMLファイルを読み込むため
内部エンコーディングを UTF-8 に変更。
(2) simple_load_string() でXMLファイルを読む。
(3) phpスクリプトは EUC-JP で書かれているので
ロケーションパスの記述を mb_convert_encoding() 
で UTF-8 に変換してから xpath()に渡す。
(4) すべてのデータを取得したのち内部エンコーディング
を EUC-JP に戻す。
---------------------------------------------
という流れを考えました。

□ Plamo側 の php.ini の設定内容です。
----------------------------------------
output_buffering = 4096
output_handler = mb_output_handler
; default_charset = "iso-8859-1"
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC_JP
; mbstring.encoding_translation = Off
; mbstring.detect_order = auto
; mbstring.substitute_character = none;

(※mbstring.script_encodingの記述なし。)

あと、Plamo で php.ini に追加されている部分の中に

; Additional modules for Plamo Linux
   extension=gd.so
   extension=dba.so
   extension=pgsql.so
   extension=mcrypt.so
   extension=mhash.so
   extension=snmp.so
   extension=ldap.so
   extension=zip.so
   ;extension=namazu.so
   ;extension=apc.so
   ;extension=xmlreader.so
   ;extension=xmlwriter.so

それらしい名前がコメントアウトされていたので
最後の2つを有効にしてみましたが
 "cannot open shared object file: No such file or directory"
と叱られました。
----------------------------------------

□ SuseとMiracleでは内容の相違はありませんでした。
----------------------------------------
output_buffering = 4096
; output_handler =
; default_charset = "iso-8859-1"
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC_JP
; mbstring.encoding_translation = Off
; mbstring.detect_order = auto
; mbstring.substitute_character = none;

(※mbstring.script_encodingの記述なし。)
-----------------------------------------

また、以下は"printenv | grep LANG" を
KDEのコンソールで実行した結果です。

・Plamo4.03 の場合:LANG=ja_JP.eucJP
・Suse9.3 の場合:LANG=ja_JP.eucJP
・Miracle4.0 評価版の場合:LANG=ja_JP.UTF-8

明示的に内部エンコーディングを変更しているので
Suse(EUC) でも Miracle(UTF-8) でも問題なく
実行されているのだと思います。

PHP はインタープリタという認識をもっているのですが
同じスクリプトを実行して、なぜ Plamo では
「セグメンテーション違反」となって落ちてしまうのか?

> 問題が残るようでしたら、簡単なサンプルをいただけると
> 検証しやすいのでよろしくお願いします。

後ほどメールに添付して送らせて頂きますので検証のほど
よろしくお願いいたします。

和泉 清明

Follow-Ups
[plamo:26624] Re: simpleXMLのxpathでセグメンテーション違反, k-izumi
[plamo:26626] Re: simpleXMLのxpathでセグメンテーション違反, J.Kuwamura
References
[plamo:26616] Re: simpleXMLのxpathでセグメンテーション違反, J.Kuwamura

[検索ページ] [メール一覧]
Plamo ML 公開システム