2

CodeIgniter フレームワークを使用して、PHP5 で作成しているアプリケーションがあります。Windows (Xampp を使用) と Ubuntu (標準の Apache、PHP、MySQL スタックを使用) の両方で実行しています。

XML を取得し、(simpleXML を使用して) 解析し、結果をデータベースに投稿するフォームがあります。

Windows では問題ありません。意図したとおりに動作します。

Linux の場合 - 大きな問題です。エラーが出ます。

XML を再確認しましたが、問題ありません。

大量の XML を削除しましたが、問題ないようです。

フォームから投稿される XML 文字列のサイズに関係していると思いますが、よくわかりません。繰り返しますが、Windows では問題ありませんが、Linux ではエラーになります。

フォームに投稿されるデータのサイズは最大 160k です (これは大量のテキストですが、自動化されており、最終的には約 200k になります)。

エラーは以下です。

どんな助けでも大歓迎です。

致命的なエラー: /var/www/ci/system/application/controllers/system.php:49 でメッセージ「String could not be parsed as XML」を含むキャッチされない例外「Exception」が発生しました:49 スタック トレース: #0 /var/www/ci/ system/application/controllers/system.php(49): SimpleXMLElement->__construct('') #1 [内部関数]: System->add_system() #2 /var/www/ci/system/codeigniter/CodeIgniter.php (233): call_user_func_array(Array, Array) #3 /var/www/ci/index.php(115): require_once('/var/www/ci/sys...') #4 {main} が / でスローされる49 行目の var/www/ci/system/application/controllers/system.php

49 行目は次のようになります。

$xml = new SimpleXMLElement($this->input->post('form_systemXML'));

編集 - 修正済み

問題が見つかりました。Suhosin は Ubuntu にインストールされています。ファイル /etc/php5/apache2/conf.d/suhosin.ini で、この行を有効にしsuhosin.post.max_value_length = 65000て値を 195000 に変更しました。Apache を再起動しましたが、すべて問題ありませんでした。ポインタの人たちに感謝します。

4

4 に答える 4

2

Suhosin PHP 拡張機能を実行しているようです。http://www.hardened-php.net/suhosin/configuration.htmlにある構成ドキュメントを参照してください。

関連するオプションは次のようです (私は Suhosin 拡張機能を使用したことがありません): suhosin.post.max_value_lengthおよび/またはsuhosin.request.max_value_length

于 2008-11-04T12:13:05.390 に答える
1

Linux ボックスの PHP 構成を確認し、Windows の設定と比較してください。特に次の設定:

  • メモリ制限
  • post_max_size
  • magic_quotes_gpc
  • max_input_time

おそらく、スクリプトに投稿されたデータのダンプを行うことができます

print_r($_POST);

実際にサーバーに送られてくるデータを確認します。

于 2008-11-04T11:28:06.590 に答える
0

すでにこのアプローチを試したことがあるかもしれませんが、行末を確認しましたか? \n (UNIX) ではなく \r\n (DOS) ですか? simpleXML が使用する正規表現は、異なるプラットフォームでは混乱する可能性があります...

于 2008-11-04T11:24:58.857 に答える
0

更新 - syslog でこれを見つけました

11 月 4 日 21:53:32 ubu804 suhosin[7944]: ALERT - 構成された要求変数値の長さの制限を超えました - ドロップされた変数 'form_systemXML' (攻撃者 '127.0.0.1'、ファイル '/var/www/ci/index.php')

今、Apacheの設定を見ています。

于 2008-11-04T12:01:19.143 に答える