From: Nikita Popov Date: Mon, 10 Aug 2020 08:38:33 +0000 (+0200) Subject: Fixed bug #77561 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=896dad4c794f7826812bcfdbaaa9f0b3518d9385;p=php Fixed bug #77561 Unconditionally strip shebang lines when using the CLI SAPI, independently of whether they occur in the primary or non-primary script. It's unlikely that someone intentionally wants to print that shebang line when including a script, and this regularly causes issues when scripts are used in multiple contexts, e.g. for direct invocation and as a phar bootstrap. --- diff --git a/NEWS b/NEWS index 9a5c78f9cf..0ed3122f90 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,8 @@ PHP NEWS . Fixed bug #79897 (Promoted constructor params with attribs cause crash). (Deus Kane) . Fixed bug #79946 (Build fails due to undeclared UINT32_C). (Nikita) + . Fixed bug #77561 (Shebang line not stripped for non-primary script). + (Nikita) - Date: . Fixed bug #60302 (DateTime::createFromFormat should new static(), not new diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index ca5804f4bf..c5f897419d 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -576,7 +576,6 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle) } if (CG(skip_shebang)) { - CG(skip_shebang) = 0; BEGIN(SHEBANG); } else { BEGIN(INITIAL); diff --git a/main/main.c b/main/main.c index b90484f159..390b08c4aa 100644 --- a/main/main.c +++ b/main/main.c @@ -2533,20 +2533,7 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file) zend_set_timeout(INI_INT("max_execution_time"), 0); } - /* - If cli primary file has shebang line and there is a prepend file, - the `skip_shebang` will be used by prepend file but not primary file, - save it and restore after prepend file been executed. - */ - if (CG(skip_shebang) && prepend_file_p) { - CG(skip_shebang) = 0; - if (zend_execute_scripts(ZEND_REQUIRE, NULL, 1, prepend_file_p) == SUCCESS) { - CG(skip_shebang) = 1; - retval = (zend_execute_scripts(ZEND_REQUIRE, NULL, 2, primary_file, append_file_p) == SUCCESS); - } - } else { - retval = (zend_execute_scripts(ZEND_REQUIRE, NULL, 3, prepend_file_p, primary_file, append_file_p) == SUCCESS); - } + retval = (zend_execute_scripts(ZEND_REQUIRE, NULL, 3, prepend_file_p, primary_file, append_file_p) == SUCCESS); } zend_end_try(); if (EG(exception)) { diff --git a/sapi/cli/tests/bug77561.inc b/sapi/cli/tests/bug77561.inc new file mode 100644 index 0000000000..e0ae5b2d13 --- /dev/null +++ b/sapi/cli/tests/bug77561.inc @@ -0,0 +1,4 @@ +#!/usr/bin/env php + +--EXPECT-- +Test