| | |
| | | <form action="index.php" method="get"> |
| | | <?php |
| | | |
| | | $required_php_exts = array('PCRE' => 'pcre', 'DOM' => 'dom', 'Session' => 'session'); |
| | | $required_php_exts = array('PCRE' => 'pcre', 'DOM' => 'dom', |
| | | 'Session' => 'session', 'XML' => 'xml'); |
| | | |
| | | $optional_php_exts = array('FileInfo' => 'fileinfo', 'Libiconv' => 'iconv', |
| | | 'Multibyte' => 'mbstring', 'OpenSSL' => 'openssl', 'Mcrypt' => 'mcrypt', |
| | |
| | | 'PostgreSQL' => 'pgsql', 'SQLite (v2)' => 'sqlite'); |
| | | |
| | | $ini_checks = array('file_uploads' => 1, 'session.auto_start' => 0, |
| | | 'zend.ze1_compatibility_mode' => 0, 'mbstring.func_overload' => 0); |
| | | 'zend.ze1_compatibility_mode' => 0, 'mbstring.func_overload' => 0, |
| | | 'suhosin.session.encrypt' => 0); |
| | | |
| | | $optional_checks = array('date.timezone' => '-NOTEMPTY-'); |
| | | |
| | | $source_urls = array( |
| | | 'Sockets' => 'http://www.php.net/manual/en/ref.sockets.php', |
| | |
| | | <h3>Checking PHP extensions</h3> |
| | | <p class="hint">The following modules/extensions are <em>required</em> to run RoundCube:</p> |
| | | <?php |
| | | |
| | | |
| | | // get extensions location |
| | | $ext_dir = ini_get('extension_dir'); |
| | | |
| | | $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : ''; |
| | | foreach ($required_php_exts AS $name => $ext) { |
| | | if (extension_loaded($ext)) { |
| | | $RCI->pass($name); |
| | | } else { |
| | | $_ext = $prefix . $ext . '.' . PHP_SHLIB_SUFFIX; |
| | | $msg = @dl($_ext) ? 'Could be loaded. Please add in php.ini' : ''; |
| | | $_ext = $ext_dir . '/' . $prefix . $ext . '.' . PHP_SHLIB_SUFFIX; |
| | | $msg = @is_readable($_ext) ? 'Could be loaded. Please add in php.ini' : ''; |
| | | $RCI->fail($name, $msg, $source_urls[$name]); |
| | | } |
| | | echo '<br />'; |
| | |
| | | |
| | | ?> |
| | | |
| | | <p class="hint">The next couple of extensions are <em>optional</em> but recommended to get the best performance:</p> |
| | | <p class="hint">The next couple of extensions are <em>optional</em> and recommended to get the best performance:</p> |
| | | <?php |
| | | |
| | | foreach ($optional_php_exts AS $name => $ext) { |
| | |
| | | $RCI->pass($name); |
| | | } |
| | | else { |
| | | $_ext = $prefix . $ext . '.' . PHP_SHLIB_SUFFIX; |
| | | $msg = @dl($_ext) ? 'Could be loaded. Please add in php.ini' : ''; |
| | | $_ext = $ext_dir . '/' . $prefix . $ext . '.' . PHP_SHLIB_SUFFIX; |
| | | $msg = @is_readable($_ext) ? 'Could be loaded. Please add in php.ini' : ''; |
| | | $RCI->na($name, $msg, $source_urls[$name]); |
| | | } |
| | | echo '<br />'; |
| | |
| | | $RCI->pass($database); |
| | | } |
| | | else { |
| | | $_ext = $prefix . $ext . '.' . PHP_SHLIB_SUFFIX; |
| | | $msg = @dl($_ext) ? 'Could be loaded. Please add in php.ini' : 'Not installed'; |
| | | $_ext = $ext_dir . '/' . $prefix . $ext . '.' . PHP_SHLIB_SUFFIX; |
| | | $msg = @is_readable($_ext) ? 'Could be loaded. Please add in php.ini' : 'Not installed'; |
| | | $RCI->na($database, $msg, $source_urls[$database]); |
| | | } |
| | | echo '<br />'; |
| | |
| | | ?> |
| | | |
| | | <h3>Checking php.ini/.htaccess settings</h3> |
| | | <p class="hint">The following settings are <em>required</em> to run RoundCube:</p> |
| | | |
| | | <?php |
| | | |
| | | foreach ($ini_checks as $var => $val) { |
| | | $status = ini_get($var); |
| | | if ($val === '-NOTEMPTY-') { |
| | | if (empty($status)) { |
| | | $RCI->fail($var, "cannot be empty and needs to be set"); |
| | | } else { |
| | | $RCI->pass($var); |
| | | } |
| | | echo '<br />'; |
| | | continue; |
| | | } |
| | | if ($status == $val) { |
| | | $RCI->pass($var); |
| | | } |
| | | else { |
| | | } else { |
| | | $RCI->fail($var, "is '$status', should be '$val'"); |
| | | } |
| | | echo '<br />'; |
| | | } |
| | | ?> |
| | | |
| | | <p class="hint">The following settings are <em>optional</em> and recommended:</p> |
| | | |
| | | <?php |
| | | |
| | | foreach ($optional_checks as $var => $val) { |
| | | $status = ini_get($var); |
| | | if ($val === '-NOTEMPTY-') { |
| | | if (empty($status)) { |
| | | $RCI->optfail($var, "Could be set"); |
| | | } else { |
| | | $RCI->pass($var); |
| | | } |
| | | echo '<br />'; |
| | | continue; |
| | | } |
| | | if ($status == $val) { |
| | | $RCI->pass($var); |
| | | } else { |
| | | $RCI->optfail($var, "is '$status', could be '$val'"); |
| | | } |
| | | echo '<br />'; |
| | | } |
| | | ?> |
| | | |
| | | <?php |
| | | |
| | | if ($RCI->failures) { |