From e0ecd38a82eaf3786f7e892908557206f33f0aeb Mon Sep 17 00:00:00 2001 From: kemo Date: Wed, 11 Mar 2026 07:31:28 +0100 Subject: [PATCH] Throw exception on fopen failure in streaming encoding --- src/PhpSpreadsheet/Reader/Csv.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/PhpSpreadsheet/Reader/Csv.php b/src/PhpSpreadsheet/Reader/Csv.php index af89e9ea5..98348c00d 100644 --- a/src/PhpSpreadsheet/Reader/Csv.php +++ b/src/PhpSpreadsheet/Reader/Csv.php @@ -319,14 +319,19 @@ class Csv extends BaseReader private function convertEncodingStreaming(string $filename): void { $sourceHandle = fopen($filename, 'rb'); + // Using php://temp instead of php://memory: spills to disk when data + // exceeds 2MB, reducing peak memory for large files. $outputHandle = fopen('php://temp', 'r+b'); if ($sourceHandle === false || $outputHandle === false) { // @codeCoverageIgnoreStart if ($sourceHandle !== false) { fclose($sourceHandle); } + if ($outputHandle !== false) { + fclose($outputHandle); + } - return; + throw new ReaderException("Failed to open file for encoding conversion: {$filename}"); // @codeCoverageIgnoreEnd }