webforge-configuration-tester
test your php configuration from cli or unit tests
The ConfigurationTester is able to check configuration of the environment (currently PHP-ini values) to a set of fixed values. The php.ini settings can be received through the ConfigurationRetriever (for example from a apache dump-script)., (*1)
use Webforge\Setup\ConfigurationTester;
$t = new ConfigurationTester();
$t->INI('mbstring.internal_encoding', 'utf-8');
You can use several operators to compare values, (*2)
$t->INI('post_max_size','2M', '>=');
$t->INI('post_max_size',1024, '<');
values like "2M" (filesizes) will get normalized, so that it is natural to compare them., (*3)
// if ini_get('post_max_size') is "2M" or 2097152 doesn't matter
$t->INI('post_max_size',2*1024*1024);
$t->INI('post_max_size','2M');
You can use the ConfigurationTester to test your webserver (or other remotes) PHP-ini values:, (*4)
use Webforge\Setup\ConfigurationTester;
use Webforge\Setup\RemoteConfigurationRetriever;
$t = new ConfigurationTester(new RemoteConfigurationRetriever('http://localhost:80/dump-inis.php'));
put dump-inis.php into webroot with this contents:, (*5)
<?php
print json_encode(ini_get_all());
?>
You can get the results of the checks, with retrieving the defects. They are instances from ConfigurationDefect Class and can be converted to String to verbose their failure:, (*6)
if (count($t->getDefects()) > 0) {
throw new \RuntimeException('Please check your Config: '.implode("\n", $t->getDefects()));
}
You could get nicer formatted output with the ConfigurationTester::__toString(). This may change in the future for a ConfigurationTesterPrinter or something.., (*7)
print $t;