Bug #75850 [Opn]: Incorrect PHAR stub parsing with __halt_compiler() using implied semicolon
| From: | requinix@php.net | Date: | Sat, 20 Jan 2018 09:41:03 +0000 |
| Subject: | Bug #75850 [Opn]: Incorrect PHAR stub parsing with __halt_compiler() using implied semicolon | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-213629@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75850&edit=1
ID: 75850
Updated by: requinix@php.net
Reported by: anrdaemon at freemail dot ru
-Summary: Incorrect PHAR stub parsing
+Summary: Incorrect PHAR stub parsing with __halt_compiler()
using implied semicolon
Status: Open
Type: Bug
Package: PHAR related
Operating System: unrelated
PHP Version: 7.1.13
Block user comment: N
Private report: N
New Comment:
?> does imply ; however the Phar stub docs
http://php.net/manual/en/phar.fileformat.stub.php
require "that it conclude with __HALT_COMPILER();". Indeed, Phar internally looks for that
exact (case-insensitive) string.
This could be a request to support dropping the semicolon, but changing the message is certainly
easy enough.
Previous Comments:
------------------------------------------------------------------------
[2018-01-20 09:21:45] anrdaemon at freemail dot ru
Description:
------------
Unable to use stub with "?>" token present but ";" omitted after
__halt_compiler().
According to PHP parsing rules, "?>" implies ";". (In other words, the stub
itself executes cleanly, which makes it extra hard to realize the source of confusion.)
At the very least, the error message could be clearer.
Test script:
---------------
<?php
(new Phar("test.phar"))->setStub("<?php __halt_compiler()?>");
Expected result:
----------------
A
test.phar example created.
Actual result:
--------------
PHP Fatal error: Uncaught PharException: illegal stub for phar ".../test.phar" in
.../case2.php:3
Stack trace:
#0 .../case2.php(3): Phar->setStub('<?php __halt_co...')
#1 {main}
thrown in .../case2.php on line 3
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=75850&edit=1