PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Configuration » Config » Bug #5598

'=' in value breaks ini file

Details

Submitted2005-10-04 07:41 UTC
Fromstefano dot s at webindustry dot it
Assignedaashley
StatusClosed
PackageConfig
PHP Version4.2.2
OSLinux
Roadmaps(Not assigned)

Comments

[2005-10-04 07:41 UTC] stefano dot s at webindustry dot it

Description:
------------
When a value contains a '=' char trying to save as ini
file results in a broken file.

example:

key: url
value: myurl.com/?section=test

is saved as

url=myurl.com/?section=test

istead of

url="myurl.com/?section=test"

Test script:
---------------
$conf = array('TEST' => array('one' => 'test1',
'two' => 'test2=test',
'three' => 'test3'));
$config = new Config();
$config->parseConfig($conf, 'phparray', array('name' => 'conf'));
$config->writeConfig("test.ini", 'inifile');

/*** PATCH ***/
in Config/Container/IniFile.php function tostring(), change the condition:

} elseif (strlen(trim($content)) < strlen($content) ||
strpos($content, ',') !== false ||
strpos($content, ';') !== false ||
strpos($content, '"') !== false ||
strpos($content, '%') !== false) {
$content = '"'.addslashes($content).'"';

as follows:

} elseif (strlen(trim($content)) < strlen($content) ||
strpos($content, '=') !== false || /* ADDED */
strpos($content, ',') !== false ||
strpos($content, ';') !== false ||
strpos($content, '"') !== false ||
strpos($content, '%') !== false) {
$content = '"'.addslashes($content).'"';

Expected result:
----------------
test.ini:

[TEST]
one=test1
two="test2=test"
three=test3

Actual result:
--------------
test.ini:

[TEST]
one=test1
two=test2=test
three=test3

[2005-12-24 02:37 UTC] aashley at php dot net

This bug has been fixed in CVS.

If this was a documentation problem, the fix will appear on pear.php.net by the end of next Sunday (CET).

If this was a problem with the pear.php.net website, the change should be live shortly.

Otherwise, the fix will appear in the package's next release.

Thank you for the report and for helping us make PEAR better.