私は未処理の電子メールでPHPスクリプトを実行しています。これは添付ファイルをディスクに書き込みます。電子メールが受信されるたびに、生の電子メールデータがスクリプトに転送されます。スクリプトは電子メールデータを解析し、電子メールデータから添付ファイルを抽出します。PHPスクリプトが大きなファイルをディスクに書き込まない
これは小さな添付ファイルでうまくいきました。ただし、添付ファイルのサイズが約3MB以上の場合、スクリプトはファイルをディスクに書き込まないか、約700KBのデータしか書き込まない。私はphp.ini
でPHPの設定を変更しようとしましたが、それは役に立たないです。私のローカルマシンで同じスクリプトがうまく動作し、生の電子メールデータから添付ファイルを完全に抽出するということは、もっとイライラします。
生のメールを解析するためにthis libraryを使用しています。
これは、小さな添付ファイルの正常に動作され、のように私のコードが見えるものです:
...
$mailparser = new ZBateson\MailMimeParser\MailMimeParser();
$handle = fopen($receivedfile.'.txt', 'r');
$message = $mailparser->parse($handle);
$attachment1 = $message->getAttachmentPart(0);
$attachment2 = $message->getAttachmentPart(1);
$file1contents = stream_get_contents($attachment1->getContentResourceHandle());
$file2contents = stream_get_contents($attachment2->getContentResourceHandle());
file_put_contents("path/to/upload/folder/image1.jpg", $file1contents);
file_put_contents("path/to/upload/folder/image2.jpg", $file2contents);
fclose($handle);
誰もがこの問題を解決する方法のアイデアを持っていますか?
どのようなエラーが表示されますか? –
自分でできない場合は、自分のウェブサイトの管理者に質問してください。 – fizzi
まず、$ file1contentsと$ file2contentsのサイズを調べるので、ディスクの問題を見分けることができます(フラッシュ/同期(上書き)スクリプトの開始が早すぎる、バイナリ文字列が間違って管理されている、ファイル書き込みが最初のバイト '\ 0'で終わる可能性があります) – Jack