From:
Operating system: Irrelevant
PHP version: 5.3.6
Package: Scripting Engine problem
Bug Type: Bug
Bug description:Inconsistent error reporting when using highlight_xxx()
functions.
Description:
------------
Calling highlight_xxx() with content that, if executed as a normal PHP
script,
would generate an error, results in the error being available to
error_get_last(), even though, no actual PHP error has been generated by
THIS
code.
Even if all error reporting has been disabled in this script.
Whilst it there is a user note covering that error_get_last() will capture
any
error, even if it is suppressed, there is no error for highlight_xxx(),
except
when you have error_reporting set to show errors, display_errors are set
AND you
are using highlight_file() (rather than highlight_string()) to display some
code.
So, 2 issues.
1 - Inconsistent error reporting between highlight_file() and
highlight_string()
when error_reporting is enabled and errors are displayed.
2 - Errors generated from non executed code are reported as errors in this
script even though no error is output (with 1 exception).
I found this when looking into the iconv() notices generated by PhD for fa
and
ro Windows CHM building.
Test script:
---------------
<?php
$badScript = '<?php
/* Broken comment
';
file_put_contents('./badScript.php', $badScript);
function examine($text, $filename, $errorReporting, $displayErrors) {
// Report all errors and display them.
error_reporting($errorReporting);
ini_set('display_errors', $displayErrors);
ini_set('log_errors', $displayErrors);
echo
'error_reporting = ', $errorReporting, PHP_EOL,
'display_errors = ', $displayErrors, PHP_EOL,
'log_errors = ', $displayErrors, PHP_EOL, PHP_EOL,
// Highlight the text
highlight_string($text, True), PHP_EOL,
// What is the last known error?
'Last error is for highlight_string() if it is on line 19 :',
PHP_EOL,
print_r(error_get_last(), True), PHP_EOL,
// Highlight the file
highlight_file($filename, True), PHP_EOL,
// What is the last known error?
'Last error is for highlight_file() if it is on line 25 :',
PHP_EOL,
print_r(error_get_last(), True), PHP_EOL;
}
examine($badScript, './badScript.php', -1, 1);
examine($badScript, './badScript.php', -1, 0);
examine($badScript, './badScript.php', 0, 1);
examine($badScript, './badScript.php', 0, 0);
unlink('./badScript.php');
// Turn off all error reporting, display and logging.
error_reporting(0);
ini_set('display_errors', 0);
ini_set('log_errors', 0);
// Generate an error.
echo mktime(), PHP_EOL, 'Last error is for mktime() if it is on line 43 :
', PHP_EOL, print_r(error_get_last(), True), PHP_EOL;
Expected result:
----------------
error_reporting = -1
display_errors = 1
log_errors = 1
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
error_reporting = -1
display_errors = 0
log_errors = 0
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
error_reporting = 0
display_errors = 1
log_errors = 1
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
error_reporting = 0
display_errors = 0
log_errors = 0
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error :
1309341644
Actual result:
--------------
error_reporting = -1
display_errors = 1
log_errors = 1
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_string() if it is on line 19 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 19
)
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br />
Warning: Unterminated comment starting line 2 in Z:\ts1.php on line 25
</span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_file() if it is on line 25 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 25
)
error_reporting = -1
display_errors = 0
log_errors = 0
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_string() if it is on line 19 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 19
)
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_file() if it is on line 25 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 25
)
error_reporting = 0
display_errors = 1
log_errors = 1
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_string() if it is on line 19 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 19
)
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_file() if it is on line 25 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 25
)
error_reporting = 0
display_errors = 0
log_errors = 0
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_string() if it is on line 19 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 19
)
<code><span style="color: #000000">
<span style="color: #0000BB"><?php
<br /></span><span style="color: #FF9900">/* Broken comment
<br /></span>
</span>
</code>
Last error is for highlight_file() if it is on line 25 :
Array
(
[type] => 128
[message] => Unterminated comment starting line 2
[file] => Z:\ts1.php
[line] => 25
)
1309342054
Last error is for mktime() if it is on line 43 :
Array
(
[type] => 2048
[message] => mktime(): You should be using the time() function instead
[file] => Z:\ts1.php
[line] => 43
)
--
Edit bug report at https://bugs.php.net/bug.php?id=60009&edit=1
--
Try a snapshot (PHP 5.2):
https://bugs.php.net/fix.php?id=60009&r=trysnapshot52
Try a snapshot (PHP 5.3):
https://bugs.php.net/fix.php?id=60009&r=trysnapshot53
Try a snapshot (trunk):
https://bugs.php.net/fix.php?id=60009&r=trysnapshottrunk
Fixed in SVN:
https://bugs.php.net/fix.php?id=60009&r=fixed
Fixed in SVN and need be documented:
https://bugs.php.net/fix.php?id=60009&r=needdocs
Fixed in release:
https://bugs.php.net/fix.php?id=60009&r=alreadyfixed
Need backtrace:
https://bugs.php.net/fix.php?id=60009&r=needtrace
Need Reproduce Script:
https://bugs.php.net/fix.php?id=60009&r=needscript
Try newer version:
https://bugs.php.net/fix.php?id=60009&r=oldversion
Not developer issue:
https://bugs.php.net/fix.php?id=60009&r=support
Expected behavior:
https://bugs.php.net/fix.php?id=60009&r=notwrong
Not enough info:
https://bugs.php.net/fix.php?id=60009&r=notenoughinfo
Submitted twice:
https://bugs.php.net/fix.php?id=60009&r=submittedtwice
register_globals:
https://bugs.php.net/fix.php?id=60009&r=globals
PHP 4 support discontinued:
https://bugs.php.net/fix.php?id=60009&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=60009&r=dst
IIS Stability:
https://bugs.php.net/fix.php?id=60009&r=isapi
Install GNU Sed:
https://bugs.php.net/fix.php?id=60009&r=gnused
Floating point limitations:
https://bugs.php.net/fix.php?id=60009&r=float
No Zend Extensions:
https://bugs.php.net/fix.php?id=60009&r=nozend
MySQL Configuration Error:
https://bugs.php.net/fix.php?id=60009&r=mysqlcfg