0
我在原始電子郵件上運行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的大小,所以你可以區分磁盤問題(刷新/同步(不太可能),覆蓋(可能是腳本啓動了兩次))從stream_get_contents()問題(庫問題,腳本結束得太早,二進制字符串被錯誤地管理 - 也許文件寫在第一個字節結束'\ 0') – Jack