Created
October 12, 2014 06:59
-
-
Save spolischook/4a1bab8b4ed53e81a6da to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (is_cli()) { | |
echo "********************************\n"; | |
echo "* *\n"; | |
echo "* Symfony requirements check *\n"; | |
echo "* *\n"; | |
echo "********************************\n\n"; | |
echo sprintf("php.ini used by PHP: %s\n\n", get_ini_path()); | |
echo "** WARNING **\n"; | |
echo "* The PHP CLI can use a different php.ini file\n"; | |
echo "* than the one used with your web server.\n"; | |
if ('\\' == DIRECTORY_SEPARATOR) { | |
echo "* (especially on the Windows platform)\n"; | |
} | |
echo "* If this is the case, please ALSO launch this\n"; | |
echo "* utility from your web server.\n"; | |
echo "** WARNING **\n"; | |
} else { | |
echo <<<EOF | |
<html> | |
<head> | |
<title>Symfony requirements check</title> | |
<style> | |
body { | |
padding: 30px; | |
text-align: center; | |
width: 900px; | |
font-family: Arial; | |
} | |
</style> | |
</head> | |
<body> | |
<h1><img width="102" height="112" alt="symfony" style="vertical-align: middle" src="data:image/png;base64,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" /> | |
REQUIREMENTS CHECK</h1> | |
EOF | |
; | |
echo sprintf("<p><small>php.ini used by PHP: %s</small></p>", get_ini_path()); | |
} | |
// mandatory | |
echo_title("Mandatory requirements"); | |
check(version_compare(phpversion(), '5.3.9', '>='), sprintf('Checking that PHP version is at least 5.3.9 (%s installed)', phpversion()), 'Install PHP 5.3.9 or newer (current version is '.phpversion(), true); | |
check(ini_get('date.timezone'), 'Checking that the "date.timezone" setting is set', 'Set the "date.timezone" setting in php.ini (like Europe/Paris)', true); | |
check(class_exists("Mongo"), sprintf('Checking that mongo pecl is installed'), 'Install Mongo pecl library. Class Mongo must be defined', true); | |
check(extension_loaded("iconv"), sprintf('Checking that iconv is available'), 'Install the iconv pecl library or compile PHP with iconv support. iConv must be loaded.', true); | |
check(extension_loaded("intl"), sprintf('Checking that intl support is available'), 'Install the pecl/intl library or compile PHP with intl support. intl must be loaded.', true); | |
check(extension_loaded("mcrypt"), sprintf('Checking that mcrypt support is available'), 'Install the mcrypt library or compile PHP with mcrypt support.', true); | |
check(extension_loaded("gd"), sprintf('Checking that gd support is available'), 'Install the gd library or compile php with gd support.', true); | |
check(extension_loaded("fileinfo"), sprintf('Checking that fileinfo support is available'), 'Install the pecl/fileinfo library or compile PHP with fileinfo support. fileinfo must be loaded for proper mime type recognition.', true); | |
check(extension_loaded("mbstring"), sprintf('Checking that multi-byte support is available'), 'Install the pecl/fileinfo library or compile PHP with multi-byte (mbstring) support.', true); | |
check(extension_loaded("memcache"), sprintf('Checking that memcache support is available'), 'Install the pecl/fileinfo library or compile PHP with memcache support.', true); | |
check(extension_loaded("curl"), sprintf('Checking that curl support is available'), 'Install the pecl/fileinfo library or compile PHP with curl support.', true); | |
$accelerator = | |
(function_exists('apc_store') && ini_get('apc.enabled')) | |
; | |
check($accelerator, 'Checking that that APC is installed', 'Install APC', true); | |
if (function_exists('apache_get_modules')) { | |
$modules = apache_get_modules(); | |
$mod_rewrite = in_array('mod_rewrite', $modules); | |
} else { | |
$mod_rewrite = ($_SERVER['HTTP_MOD_REWRITE'] == 'On') ? true : false; | |
} | |
check($mod_rewrite, 'Checking that mod_rewrite is installed in Apache', 'Enable mod_rewrite in Apache configuration', true); | |
// warnings | |
echo_title("Optional checks"); | |
check(class_exists('DomDocument'), 'Checking that the PHP-XML module is installed', 'Install and enable the php-xml module', false); | |
check(function_exists('token_get_all'), 'Checking that the token_get_all() function is available', 'Install and enable the Tokenizer extension (highly recommended)', false); | |
check(function_exists('mb_strlen'), 'Checking that the mb_strlen() function is available', 'Install and enable the mbstring extension', false); | |
check(function_exists('iconv'), 'Checking that the iconv() function is available', 'Install and enable the iconv extension', false); | |
check(function_exists('utf8_decode'), 'Checking that the utf8_decode() is available', 'Install and enable the XML extension', false); | |
check(function_exists('posix_isatty'), 'Checking that the posix_isatty() is available', 'Install and enable the php_posix extension (used to colorized the CLI output)', false); | |
check(!ini_get('short_open_tag'), 'Checking that php.ini has short_open_tag set to off', 'Set short_open_tag to off in php.ini', false); | |
check(!ini_get('magic_quotes_gpc'), 'Checking that php.ini has magic_quotes_gpc set to off', 'Set magic_quotes_gpc to off in php.ini', false); | |
check(!ini_get('register_globals'), 'Checking that php.ini has register_globals set to off', 'Set register_globals to off in php.ini', false); | |
check(!ini_get('session.auto_start'), 'Checking that php.ini has session.auto_start set to off', 'Set session.auto_start to off in php.ini', false); | |
echo_title("Optional checks (Propel/Doctrine)"); | |
check(class_exists('PDO'), 'Checking that PDO is installed', 'Install PDO (mandatory for Propel and Doctrine)', false); | |
if (class_exists('PDO')) { | |
$drivers = PDO::getAvailableDrivers(); | |
check(count($drivers), 'Checking that PDO has some drivers installed: '.implode(', ', $drivers), 'Install PDO drivers (mandatory for Propel and Doctrine)'); | |
} | |
check(class_exists('XSLTProcessor'), 'Checking that XSL module is installed', 'Install the XSL module (recommended for Propel)', false); | |
if (!is_cli()) { | |
echo '</body></html>'; | |
} | |
/** | |
* Checks a configuration. | |
*/ | |
function check($boolean, $message, $help = '', $fatal = false) | |
{ | |
if (is_cli()) { | |
echo $boolean ? " OK " : sprintf("\n\n[[%s]] ", $fatal ? ' ERROR ' : 'WARNING'); | |
echo sprintf("$message%s\n", $boolean ? '' : ': FAILED'); | |
if (!$boolean) { | |
echo " *** $help ***\n"; | |
if ($fatal) { | |
die("You must fix this problem before resuming the check.\n"); | |
} | |
} | |
} else { | |
if ($boolean) { | |
$color = '#60b111'; | |
$image = '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'; | |
$alt = 'ok'; | |
} elseif ($fatal) { | |
$color = '#fd3900'; | |
$image = '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'; | |
$alt = 'fatal'; | |
} else { | |
$color = '#6a9ee6'; | |
$image = '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'; | |
$alt = 'warning'; | |
} | |
echo sprintf(' | |
<div style="background-color: %s; padding: 4px; margin: 3px; border: 1px #ddd solid; font-size: 18px"> | |
<div style="float: left"><img alt="%s" style="width: 60%%; vertical-align: middle; margin-right: 10px" src="data:image/png;base64,%s" /></div> | |
<div style="float: left; margin-top: 7px; text-align: left;">%s%s</div> | |
<div style="clear: both"></div> | |
</div>', $color, $alt, $image, $message, !$boolean ? '<div style="background-color: #fff; padding:5px">What to do'.($fatal ? '' : ' (<em>optional</em>)').': '.$help.'</div>' : ''); | |
} | |
} | |
function echo_title($title) | |
{ | |
if (is_cli()) { | |
echo "\n** $title **\n\n"; | |
} else { | |
echo "<h2>$title</h2>"; | |
} | |
} | |
/** | |
* Gets the php.ini path used by the current PHP interpretor. | |
* | |
* @return string the php.ini path | |
*/ | |
function get_ini_path() | |
{ | |
if ($path = get_cfg_var('cfg_file_path')) { | |
return $path; | |
} | |
return 'WARNING: not using a php.ini file'; | |
} | |
function is_cli() | |
{ | |
return !isset($_SERVER['HTTP_HOST']); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hurray!
All my items are green!)))