非常に長い (10-15MB)xml
データを投稿しようとしています。php.ini
したがって、開発中に次の設定を増やしました。
max_execution_time = 600
max_input_time = -1
memory_limit = 1024M
post_max_size = 5000M
upload_max_filesize = 5000M
default_socket_timeout = 600
しかし、php
関数parse_str
はまだクラッシュしているようです - 以下のすべてのコマンドが実行されず、ページ応答が 0 バイトであるためです。
私は実際にはPHPの第一人者ではありません。この問題を解決する方法を教えてもらえますか?
編集:ログも応答もありません。Apacheエラーログも何も文句を言っていません
parse_str を使用する理由 これは私のコードではありません:-)
EDIT2: CMS ツールを使用しており、いくつかのプラグインがあります。クエリ文字列を介して xml を送信することは、制限に対する回避策です。通常、XML は解析され、カスタム データベース (CMS データベースではない) に挿入されます。何が起こっているかを確認するために、いくつかのファイル プリントを挿入しました。
public function upsertItem($oXMLObjectFromExtern="")
{
$bHasError = false;
$iInserted = 0;
$iUpdated = 0;
$iErrors = 0;
$output = "";
$sPostData = file_get_contents("php://input");
// works
$fh = fopen('/var/log/apache2/kic.log', 'w');
fwrite($fh, $sPostData);
parse_str($sPostData, $aPostData);
// does not do anything, no error messages nothing ...
$fh = fopen('/var/log/apache2/kic2.log', 'w');
//fwrite($fh, "jetzt");
fwrite($fh, var_export($aPostData,TRUE));
if(!empty($aPostData['data']) OR is_object($oXMLObjectFromExtern)){
クエリ文字列は次のようにフォーマットされます: op=upsertitem&data=%3Crows%3E%0A%3Crow%3E%0A%3Cft_short_name%.... さらにエンコードされた xml データ