Skip to content
a lightweight package for ini style configuration/settings text files.
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.




a simple, lightweight and fast class for ini style configuration files, with the native PHP function `parse_ini_file' under the hood.
Config_Lite is inspired by Pythons ConfigParser.

A "Config_Lite" file consists of global key/value pair (KVP) entries and optional sections, "[section]", followed by "name = value" (KVP) entries.


A simple configuration file: `test.ini'
public_key_file =  "~/.ssh/"
debug = yes

lang = "en"

user = "dionysis"
password = "c2oiVnY!f8sf"
Read Configuration file:

require_once 'Config/Lite.php';

$config = new Config_Lite('test.ini');

echo $config->get('db', 'user'); // dionysis
echo $config->get(null, 'public_key_file'); // ~/.ssh/

if (true === $config->getBool(null, 'debug', true)) {
	echo $config;

// read with ArrayAccess
echo $config['db']['password']; // c2oiVnY!f8sf
Save Configuration file:
$config->set('db', 'user', 'JohnDoe')
	->set('db', 'password', 'd0g1tcVs$HgIn1');

// set with ArrayAccess
$config['public_key_file'] = '~/.ssh/';
$config['general'] = array('lang' => 'de');

// save object to file
Create configuration file:

require_once 'Config/Lite.php';

$config = new Config_Lite('test.ini');
$config->set('db', 'user', 'JohnDoe')
	->set('db', 'password', 'd0g1tcVs$HgIn1');

// set global bool 'debug'
$config->set(null, 'debug', false);

// save object to file
try {
} catch (Config_Lite_Exception $e) {
    echo "\n", 'Exception Message: ', $e->getMessage();
Alternative file creation with write:

require_once 'Config/Lite.php';

$filename = 'test.ini';

$config = new Config_Lite();

try {
	$config->write($filename, array(
			'public_key_file' =>  "~/.ssh/",
			'general' => array(
				'lang' => 'fr'
			'db' => array(
				'user' => 'dionysis',
				'password' => 'd0g1tcVs$HgIn1'
} catch (Config_Lite_Exception $exception) {
    printf("Failed to write file: %s.\n", $filename);
    printf("Exception Message: %s\n", $exception->getMessage());
    printf("Exception Stracktrace: %s\n", $exception->getTraceAsString());
global Configuration options (without sections) :
$config->set(null, 'private_key_file', '~/.ssh/id_rsa');
// set with arrayaccess
$config['public_key_file'] = '~/.ssh/';


echo $config->get(null, 'public_key_file');
// get with arrayaccess
echo $config['private_key_file'];
iterate (SPL Iterator) :
$config = new Config_Lite($filename);

foreach ($config as $section => $name) {
	if (is_array($name)) {
		$s.= sprintf("[%s]\n", $section);
		foreach ($name as $key => $val) {
			$s.= sprintf("\t%s = %s\n", $key, $val);
	} else {
		$s.= sprintf("%s=%s\n", $section, $name);

Notes & Limitations

  • Config_Lite is an OO frontend to `parse_ini_file' and writing ini files, but you can also use the public method `write' if you only want to write an array as ini file

  • Use getString and setString to save and read Strings with double and single-quotes

  • Use getBool if you need a real bool type, eg. for strict equality comparision

  • The methods `set' and `get' keep values untouched, but the write method normalize "bool" values to a human readable representation, doublequotes strings and numeric values without any quotes

  • newline chars defaults to "\n", editable with `setLinebreak'

  • comments get dropped when writing after reading

  • no support of comments and multiline strings, because reading with `parse_ini_file' does not support it.

If you want to save userinput like images or a regex, i’d recommend to use `get' with base64_decode and `set' with base64_encode.

Save regex (as global option) base64 encoded :

require_once 'Config/Lite.php';

$config = new Config_Lite('regex-test.ini');

$regex = '/Hello \"(.*?)\"/';
$config->set(null, 'regex', base64_encode($regex));
// save object, here sync to read it back, just to test
// in 'regex-test.ini': regex = "L0hlbGxvIFwiKC4qPylcIi8="
$regex = base64_decode($config->get(null, 'regex'));
if (preg_match($regex, 'Hello "World"!')) {
    printf("matched. regex:%s", $regex);
} else {
    printf("no match found. regex:%s", $regex);


  • Config_Lite_Parser with extended read and writefunctions (parse with Linereader), to support comments and multiline strings (both supported by Pear::Config)


Patches are Welcome!
Create an Issue with a Link to your forked branch.

Something went wrong with that request. Please try again.