Я запускаю скрипт PHP на сырые электронные письма, которые записывают вложения на диск. Каждый раз, когда приходит электронное письмо, необработанные данные электронной почты перенаправляются на скрипт, который анализирует данные электронной почты и извлекает вложения из него.PHP скрипт не пишет большие файлы на диск
Теперь это отлично подходит для небольших приложений. Однако, когда размер вложений составляет около 3 мб или более, сценарий не записывает файлы на диск или записывает только около 700 кб данных. Я попытался изменить настройки конфигурации PHP в php.ini
, но это бесполезно. Что еще более расстраивает, так это то, что тот же самый сценарий работает на моем локальном компьютере, и он отлично извлекает вложения из необработанных данных электронной почты.
Я использую 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, поэтому вы можете различать проблему с диском (flush/sync (маловероятно), перезаписать (может быть, возможно, сценарий запускается дважды)) из задачи stream_get_contents() (проблема с библиотекой, скрипт заканчивается слишком рано, двоичная строка ошибочно управляется - возможно, запись файла заканчивается на первый байт '\ 0') – Jack