[289] | 1 | <?php |
---|
| 2 | |
---|
| 3 | function is_cli() |
---|
| 4 | { |
---|
| 5 | return !isset($_SERVER['HTTP_HOST']); |
---|
| 6 | } |
---|
| 7 | |
---|
| 8 | /** |
---|
| 9 | * Checks a configuration. |
---|
| 10 | */ |
---|
| 11 | function check($boolean, $message, $help = '', $fatal = false) |
---|
| 12 | { |
---|
| 13 | echo $boolean ? " OK " : sprintf("[[%s]] ", $fatal ? ' ERROR ' : 'WARNING'); |
---|
| 14 | echo sprintf("$message%s\n", $boolean ? '' : ': FAILED'); |
---|
| 15 | |
---|
| 16 | if (!$boolean) |
---|
| 17 | { |
---|
| 18 | echo " *** $help ***\n"; |
---|
| 19 | if ($fatal) |
---|
| 20 | { |
---|
| 21 | die("You must fix this problem before resuming the check.\n"); |
---|
| 22 | } |
---|
| 23 | } |
---|
| 24 | } |
---|
| 25 | |
---|
| 26 | /** |
---|
| 27 | * Gets the php.ini path used by the current PHP interpretor. |
---|
| 28 | * |
---|
| 29 | * @return string the php.ini path |
---|
| 30 | */ |
---|
| 31 | function get_ini_path() |
---|
| 32 | { |
---|
| 33 | if ($path = get_cfg_var('cfg_file_path')) |
---|
| 34 | { |
---|
| 35 | return $path; |
---|
| 36 | } |
---|
| 37 | |
---|
| 38 | return 'WARNING: not using a php.ini file'; |
---|
| 39 | } |
---|
| 40 | |
---|
| 41 | if (!is_cli()) |
---|
| 42 | { |
---|
| 43 | echo '<html><body><pre>'; |
---|
| 44 | } |
---|
| 45 | |
---|
| 46 | echo "********************************\n"; |
---|
| 47 | echo "* *\n"; |
---|
| 48 | echo "* symfony requirements check *\n"; |
---|
| 49 | echo "* *\n"; |
---|
| 50 | echo "********************************\n\n"; |
---|
| 51 | |
---|
| 52 | echo sprintf("php.ini used by PHP: %s\n\n", get_ini_path()); |
---|
| 53 | |
---|
| 54 | if (is_cli()) |
---|
| 55 | { |
---|
| 56 | echo "** WARNING **\n"; |
---|
| 57 | echo "* The PHP CLI can use a different php.ini file\n"; |
---|
| 58 | echo "* than the one used with your web server.\n"; |
---|
| 59 | if ('\\' == DIRECTORY_SEPARATOR) |
---|
| 60 | { |
---|
| 61 | echo "* (especially on the Windows platform)\n"; |
---|
| 62 | } |
---|
| 63 | echo "* If this is the case, please launch this\n"; |
---|
| 64 | echo "* utility from your web server.\n"; |
---|
| 65 | echo "** WARNING **\n"; |
---|
| 66 | } |
---|
| 67 | |
---|
| 68 | // mandatory |
---|
| 69 | echo "\n** Mandatory requirements **\n\n"; |
---|
| 70 | check(version_compare(phpversion(), '5.2.4', '>='), sprintf('PHP version is at least 5.2.4 (%s)', phpversion()), 'Current version is '.phpversion(), true); |
---|
| 71 | |
---|
| 72 | // warnings |
---|
| 73 | echo "\n** Optional checks **\n\n"; |
---|
| 74 | check(class_exists('PDO'), 'PDO is installed', 'Install PDO (mandatory for Propel and Doctrine)', false); |
---|
| 75 | if (class_exists('PDO')) |
---|
| 76 | { |
---|
| 77 | $drivers = PDO::getAvailableDrivers(); |
---|
| 78 | check(count($drivers), 'PDO has some drivers installed: '.implode(', ', $drivers), 'Install PDO drivers (mandatory for Propel and Doctrine)'); |
---|
| 79 | } |
---|
| 80 | check(class_exists('DomDocument'), 'PHP-XML module is installed', 'Install and enable the php-xml module (required by Propel)', false); |
---|
| 81 | check(class_exists('XSLTProcessor'), 'XSL module is installed', 'Install and enable the XSL module (recommended for Propel)', false); |
---|
| 82 | check(function_exists('token_get_all'), 'The token_get_all() function is available', 'Install and enable the Tokenizer extension (highly recommended)', false); |
---|
| 83 | check(function_exists('mb_strlen'), 'The mb_strlen() function is available', 'Install and enable the mbstring extension', false); |
---|
| 84 | check(function_exists('iconv'), 'The iconv() function is available', 'Install and enable the iconv extension', false); |
---|
| 85 | check(function_exists('utf8_decode'), 'The utf8_decode() is available', 'Install and enable the XML extension', false); |
---|
| 86 | check(function_exists('posix_isatty'), 'The posix_isatty() is available', 'Install and enable the php_posix extension (used to colorized the CLI output)', false); |
---|
| 87 | |
---|
| 88 | $accelerator = |
---|
| 89 | (function_exists('apc_store') && ini_get('apc.enabled')) |
---|
| 90 | || |
---|
| 91 | function_exists('eaccelerator_put') && ini_get('eaccelerator.enable') |
---|
| 92 | || |
---|
| 93 | function_exists('xcache_set') |
---|
| 94 | ; |
---|
| 95 | check($accelerator, 'A PHP accelerator is installed', 'Install a PHP accelerator like APC (highly recommended)', false); |
---|
| 96 | |
---|
| 97 | check(!ini_get('short_open_tag'), 'php.ini has short_open_tag set to off', 'Set it to off in php.ini', false); |
---|
| 98 | check(!ini_get('magic_quotes_gpc'), 'php.ini has magic_quotes_gpc set to off', 'Set it to off in php.ini', false); |
---|
| 99 | check(!ini_get('register_globals'), 'php.ini has register_globals set to off', 'Set it to off in php.ini', false); |
---|
| 100 | check(!ini_get('session.auto_start'), 'php.ini has session.auto_start set to off', 'Set it to off in php.ini', false); |
---|
| 101 | |
---|
| 102 | check(version_compare(phpversion(), '5.2.9', '!='), 'PHP version is not 5.2.9', 'PHP 5.2.9 broke array_unique() and sfToolkit::arrayDeepMerge(). Use 5.2.10 instead [Ticket #6211]', false); |
---|
| 103 | |
---|
| 104 | if (!is_cli()) |
---|
| 105 | { |
---|
| 106 | echo '</pre></body></html>'; |
---|
| 107 | } |
---|