#45956 [Asn->Csd]: parse_ini_file() does not return false with syntax errors in parsed file
| From: | jani@php.net | Date: | Sun, 31 Aug 2008 00:21:34 +0000 |
| Subject: | #45956 [Asn->Csd]: parse_ini_file() does not return false with syntax errors in parsed file | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-128565@lists.php.net to get a copy of this message | ||
ID: 45956
Updated by: jani@php.net
Reported By: bugs at timj dot co dot uk
-Status: Assigned
+Status: Closed
Bug Type: Filesystem function related
Operating System: *
PHP Version: 5CVS, 6CVS (2008-08-31)
Assigned To: jani
New Comment:
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2008-08-30 22:41:26] jani@php.net
It's a bug. Oversight, but bug nevertheless.
------------------------------------------------------------------------
[2008-08-30 18:59:21] bugs at timj dot co dot uk
Description:
------------
This seems to be a design error rather than a bug: parse_ini_file()
does not provide any way to handle errors gracefully. In the event of a
syntax error, it throws an E_WARNING *but* the return value is simply an
empty array (the same as a - valid - empty file) instead of FALSE. Thus
there is no way to trap the error (via @ prefix) and handle it in a more
graceful way than an E_WARNING.
I would argue that changing the return value to FALSE in the case of an
invalid file is a reasonable change, since the only situations it will
break are ones where currently PHP throws a warning anyway.
Reproduce code:
---------------
This is what it would be nice to be able to do:
$ini = @parse_ini_file('some_invalid.ini');
if ($ini === false) {
// error: do something graceful
}
// normal execution
Expected result:
----------------
The code section "// do something graceful" executes
Actual result:
--------------
The code section "// normal execution" executes
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=45956&edit=1