Что может привести к случайному повреждению загрузки файла (apache + PHP)? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть довольно простой PHP-скрипт, который просто берет файл изображения, загруженный через HTML-форму, и передает его непосредственно в службу облачных файлов Rackspace.Я также использую библиотеку flysystem в качестве уровня загрузки абстракций.Между ними ничего интересного не происходит (изменение размера или повторного сохранения изображения, просто прямая загрузка файла tmp_name, полученного с помощью метода putStream () fopen и flysystem и их адаптера Rackspace).Это работает почти все время, за исключением некоторых действительно редких случаев, когда изображение оказывается поврежденным.По какой-то причине нижняя половина загруженного изображения просто становится сплошным цветом или беспорядком пикселей (до сих пор я только дважды обнаружил эту проблему).Я попытался сравнить поврежденное изображение с исходным, и обнаружил несколько интересных моментов:

  • Размер файла между двумя точно такой же
  • Проводник файлов моего ПК с Windows показывает правильный эскиздля обоих, даже для поврежденных
  • Если я сравниваю файлы с помощью шестнадцатеричного редактора, только несколько непрерывных байтов отличаются в середине файла.В первый раз это произошло, 6 байтов были разными.Во второй раз это произошло, 12 байтов были разными.Очевидно, что, когда я медленно исправляю байты, он восстанавливает поврежденное изображение.

Кто-нибудь мог бы понять, почему или как это могло произойти?Сервер, на котором это происходит, сильно устарел (PHP 5.6.21 и Apache 2.2.15), и обновление его программного обеспечения на данный момент не является приоритетом, так как через месяц или 2 мы перейдем на более новое оборудование с обновленным программным обеспечением.

...