From b83b186ac053e8871563852a61a78b0619a739d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Bouc=CC=8Cek?= Date: Tue, 3 Nov 2020 20:20:32 +0100 Subject: [PATCH 1/4] AutoloadGenerator: Send error HTTP status on error --- src/Composer/Autoload/AutoloadGenerator.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Composer/Autoload/AutoloadGenerator.php b/src/Composer/Autoload/AutoloadGenerator.php index a81ad49ab..dcbdc93e8 100644 --- a/src/Composer/Autoload/AutoloadGenerator.php +++ b/src/Composer/Autoload/AutoloadGenerator.php @@ -734,7 +734,8 @@ EXT_CHECKS; \$issues = array(); ${requiredPhp}${requiredExtensions} -if (\$issues) { +if (\$issues && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); echo 'Composer detected issues in your platform:' . "\\n\\n" . implode("\\n", \$issues) . "\\n\\n"; exit(104); } From 6f1761fe187eb4048e0d237862a68f97413867d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Bouc=CC=8Cek?= Date: Tue, 3 Nov 2020 20:20:47 +0100 Subject: [PATCH 2/4] AutoloadGenerator: Send error HTTP status on error - update tests --- .../Test/Autoload/Fixtures/platform/no_extensions_required.php | 3 ++- .../Test/Autoload/Fixtures/platform/no_php_required.php | 3 ++- .../Test/Autoload/Fixtures/platform/no_php_upper_bound.php | 3 ++- .../Test/Autoload/Fixtures/platform/replaced_provided_exts.php | 3 ++- .../Test/Autoload/Fixtures/platform/specific_php_release.php | 3 ++- tests/Composer/Test/Autoload/Fixtures/platform/typical.php | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php b/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php index de185cfca..69d65fb1b 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php @@ -8,7 +8,8 @@ if (!(PHP_VERSION_ID >= 70200)) { $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; } -if ($issues) { +if ($issues && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; exit(104); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php index c0fcf897f..ae5a9761f 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php @@ -12,7 +12,8 @@ if ($missingExtensions) { $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions); } -if ($issues) { +if ($issues && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; exit(104); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php index de185cfca..69d65fb1b 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php @@ -8,7 +8,8 @@ if (!(PHP_VERSION_ID >= 70200)) { $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; } -if ($issues) { +if ($issues && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; exit(104); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php b/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php index 5d94c0d22..98c4d3d1e 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php @@ -11,7 +11,8 @@ if ($missingExtensions) { $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions); } -if ($issues) { +if ($issues && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; exit(104); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php b/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php index ac1d729f9..dc7cfa4f3 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php @@ -8,7 +8,8 @@ if (!(PHP_VERSION_ID >= 70208)) { $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.8". You are running ' . PHP_VERSION . '.'; } -if ($issues) { +if ($issues && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; exit(104); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/typical.php b/tests/Composer/Test/Autoload/Fixtures/platform/typical.php index 3f4e1ac78..4c78d2378 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/typical.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/typical.php @@ -16,7 +16,8 @@ if ($missingExtensions) { $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions); } -if ($issues) { +if ($issues && !headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; exit(104); } From 3f63bc92058f17859f0c07cd182731bf1343cc75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Bouc=CC=8Cek?= Date: Wed, 4 Nov 2020 12:00:12 +0100 Subject: [PATCH 3/4] AutoloadGenerator: Trigger native PHP error on platform checks fails --- src/Composer/Autoload/AutoloadGenerator.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Composer/Autoload/AutoloadGenerator.php b/src/Composer/Autoload/AutoloadGenerator.php index dcbdc93e8..10bf27167 100644 --- a/src/Composer/Autoload/AutoloadGenerator.php +++ b/src/Composer/Autoload/AutoloadGenerator.php @@ -734,10 +734,11 @@ EXT_CHECKS; \$issues = array(); ${requiredPhp}${requiredExtensions} -if (\$issues && !headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - echo 'Composer detected issues in your platform:' . "\\n\\n" . implode("\\n", \$issues) . "\\n\\n"; - exit(104); +if (\$issues) { + trigger_error( + 'Composer detected issues in your platform: ' . implode(', ', \$issues), + E_USER_ERROR + ); } PLATFORM_CHECK; From 2595de07ce1ab1bced96c4e9be98008248ce2985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Bouc=CC=8Cek?= Date: Wed, 4 Nov 2020 12:00:21 +0100 Subject: [PATCH 4/4] AutoloadGenerator: Trigger native PHP error on platform checks fails - tests --- .../Fixtures/platform/no_extensions_required.php | 9 +++++---- .../Test/Autoload/Fixtures/platform/no_php_required.php | 9 +++++---- .../Autoload/Fixtures/platform/no_php_upper_bound.php | 9 +++++---- .../Fixtures/platform/replaced_provided_exts.php | 9 +++++---- .../Autoload/Fixtures/platform/specific_php_release.php | 9 +++++---- .../Composer/Test/Autoload/Fixtures/platform/typical.php | 9 +++++---- 6 files changed, 30 insertions(+), 24 deletions(-) diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php b/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php index 69d65fb1b..188c0fae4 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/no_extensions_required.php @@ -8,8 +8,9 @@ if (!(PHP_VERSION_ID >= 70200)) { $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; } -if ($issues && !headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; - exit(104); +if ($issues) { + trigger_error( + 'Composer detected issues in your platform: ' . implode(', ', $issues), + E_USER_ERROR + ); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php index ae5a9761f..ee7d8cacd 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_required.php @@ -12,8 +12,9 @@ if ($missingExtensions) { $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions); } -if ($issues && !headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; - exit(104); +if ($issues) { + trigger_error( + 'Composer detected issues in your platform: ' . implode(', ', $issues), + E_USER_ERROR + ); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php index 69d65fb1b..188c0fae4 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/no_php_upper_bound.php @@ -8,8 +8,9 @@ if (!(PHP_VERSION_ID >= 70200)) { $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; } -if ($issues && !headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; - exit(104); +if ($issues) { + trigger_error( + 'Composer detected issues in your platform: ' . implode(', ', $issues), + E_USER_ERROR + ); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php b/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php index 98c4d3d1e..c530dc59d 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/replaced_provided_exts.php @@ -11,8 +11,9 @@ if ($missingExtensions) { $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions); } -if ($issues && !headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; - exit(104); +if ($issues) { + trigger_error( + 'Composer detected issues in your platform: ' . implode(', ', $issues), + E_USER_ERROR + ); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php b/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php index dc7cfa4f3..5a2d6dfed 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/specific_php_release.php @@ -8,8 +8,9 @@ if (!(PHP_VERSION_ID >= 70208)) { $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.8". You are running ' . PHP_VERSION . '.'; } -if ($issues && !headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; - exit(104); +if ($issues) { + trigger_error( + 'Composer detected issues in your platform: ' . implode(', ', $issues), + E_USER_ERROR + ); } diff --git a/tests/Composer/Test/Autoload/Fixtures/platform/typical.php b/tests/Composer/Test/Autoload/Fixtures/platform/typical.php index 4c78d2378..ba33b7aeb 100644 --- a/tests/Composer/Test/Autoload/Fixtures/platform/typical.php +++ b/tests/Composer/Test/Autoload/Fixtures/platform/typical.php @@ -16,8 +16,9 @@ if ($missingExtensions) { $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions); } -if ($issues && !headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues) . "\n\n"; - exit(104); +if ($issues) { + trigger_error( + 'Composer detected issues in your platform: ' . implode(', ', $issues), + E_USER_ERROR + ); }