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