/** * @param Symfony\Component\Translation\Translator $translator * @return array */ function getOptions($translator) { return array(array('name' => 'Safe Mode', 'url' => 'http://php.net/manual/features.safe-mode.php', 'recommended' => Display::label('OFF', 'success'), 'current' => check_php_setting('safe_mode', 'OFF')), array('name' => 'Display Errors', 'url' => 'http://php.net/manual/ref.errorfunc.php#ini.display-errors', 'recommended' => Display::label('ON', 'success'), 'current' => check_php_setting('display_errors', 'OFF')), array('name' => 'File Uploads', 'url' => 'http://php.net/manual/ini.core.php#ini.file-uploads', 'recommended' => Display::label('OFF', 'success'), 'current' => check_php_setting('file_uploads', 'ON')), array('name' => 'Magic Quotes GPC', 'url' => 'http://php.net/manual/ref.info.php#ini.magic-quotes-gpc', 'recommended' => Display::label('OFF', 'success'), 'current' => check_php_setting('magic_quotes_gpc', 'OFF')), array('name' => 'Magic Quotes Runtime', 'url' => 'http://php.net/manual/ref.info.php#ini.magic-quotes-runtime', 'recommended' => Display::label('OFF', 'success'), 'current' => check_php_setting('magic_quotes_runtime', 'OFF')), array('name' => 'Register Globals', 'url' => 'http://php.net/manual/security.globals.php', 'recommended' => Display::label('OFF', 'success'), 'current' => check_php_setting('register_globals', 'OFF')), array('name' => 'Session auto start', 'url' => 'http://php.net/manual/ref.session.php#ini.session.auto-start', 'recommended' => Display::label('OFF', 'success'), 'current' => check_php_setting('auto_start', 'OFF')), array('name' => 'Short Open Tag', 'url' => 'http://php.net/manual/ini.core.php#ini.short-open-tag', 'recommended' => Display::label('OFF', 'success'), 'current' => check_php_setting('short_open_tag', 'OFF')), array('name' => 'Cookie HTTP Only', 'url' => 'http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-httponly', 'recommended' => Display::label('ON', 'success'), 'current' => check_php_setting('session.cookie_httponly', 'ON')), array('name' => 'Maximum upload file size', 'url' => 'http://php.net/manual/ini.core.php#ini.upload-max-filesize', 'recommended' => Display::label('>= ' . REQUIRED_MIN_UPLOAD_MAX_FILESIZE . 'M', 'success'), 'current' => compare_setting_values(ini_get('upload_max_filesize'), REQUIRED_MIN_UPLOAD_MAX_FILESIZE)), array('name' => 'Maximum post size', 'url' => 'http://php.net/manual/ini.core.php#ini.post-max-size', 'recommended' => Display::label('>= ' . REQUIRED_MIN_POST_MAX_SIZE . 'M', 'success'), 'current' => compare_setting_values(ini_get('post_max_size'), REQUIRED_MIN_POST_MAX_SIZE)), array('name' => 'Memory Limit', 'url' => 'http://www.php.net/manual/en/ini.core.php#ini.memory-limit', 'recommended' => Display::label('>= ' . REQUIRED_MIN_MEMORY_LIMIT . 'M', 'success'), 'current' => compare_setting_values(ini_get('memory_limit'), REQUIRED_MIN_MEMORY_LIMIT))); }
/** * This function displays the requirements for installing Chamilo. * * @param string $installType * @param boolean $badUpdatePath * @param string The updatePath given (if given) * @param array $update_from_version_8 The different subversions from version 1.8 * @param array $update_from_version_6 The different subversions from version 1.6 * * @author unknow * @author Patrick Cool <*****@*****.**>, Ghent University */ function display_requirements($installType, $badUpdatePath, $updatePath = '', $update_from_version_8 = array(), $update_from_version_6 = array()) { global $_setting; echo '<div class="RequirementHeading"><h2>'.display_step_sequence().get_lang('Requirements')."</h2></div>"; echo '<div class="RequirementText">'; echo '<strong>'.get_lang('ReadThoroughly').'</strong><br />'; echo get_lang('MoreDetails').' <a href="../../documentation/installation_guide.html" target="_blank">'.get_lang('ReadTheInstallGuide').'</a>.<br />'."\n"; if ($installType == 'update') { echo get_lang('IfYouPlanToUpgradeFromOlderVersionYouMightWantToHaveAlookAtTheChangelog').'<br />'; } echo '</div>'; // SERVER REQUIREMENTS echo '<div class="RequirementHeading"><h2>'.get_lang('ServerRequirements').'</h2>'; $timezone = check_php_setting_exists("date.timezone"); if (!$timezone) { echo "<div class='warning-message'>".Display::return_icon('warning.png',get_lang('Warning'),'',ICON_SIZE_MEDIUM).get_lang("DateTimezoneSettingNotSet")."</div>"; } echo '<div class="RequirementText">'.get_lang('ServerRequirementsInfo').'</div>'; echo '<div class="RequirementContent">'; echo '<table class="table"> <tr> <td class="requirements-item">'.get_lang('PHPVersion').' >= '.REQUIRED_PHP_VERSION.'</td> <td class="requirements-value">'; if (phpversion() < REQUIRED_PHP_VERSION) { echo '<strong><font color="red">'.get_lang('PHPVersionError').'</font></strong>'; } else { echo '<strong><font color="green">'.get_lang('PHPVersionOK'). ' '.phpversion().'</font></strong>'; } echo '</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.session.php" target="_blank">Session</a> '.get_lang('support').'</td> <td class="requirements-value">'.check_extension('session', get_lang('Yes'), get_lang('ExtensionSessionsNotAvailable')).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.mysql.php" target="_blank">MySQL</a> '.get_lang('support').'</td> <td class="requirements-value">'.check_extension('mysql', get_lang('Yes'), get_lang('ExtensionMySQLNotAvailable')).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.zlib.php" target="_blank">Zlib</a> '.get_lang('support').'</td> <td class="requirements-value">'.check_extension('zlib', get_lang('Yes'), get_lang('ExtensionZlibNotAvailable')).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.pcre.php" target="_blank">Perl-compatible regular expressions</a> '.get_lang('support').'</td> <td class="requirements-value">'.check_extension('pcre', get_lang('Yes'), get_lang('ExtensionPCRENotAvailable')).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.xml.php" target="_blank">XML</a> '.get_lang('support').'</td> <td class="requirements-value">'.check_extension('xml', get_lang('Yes'), get_lang('No')).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.mbstring.php" target="_blank">Multibyte string</a> '.get_lang('support').' ('.get_lang('Optional').')</td> <td class="requirements-value">'.check_extension('mbstring', get_lang('Yes'), get_lang('ExtensionMBStringNotAvailable'), true).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.iconv.php" target="_blank">Iconv</a> '.get_lang('support').' ('.get_lang('Optional').')</td> <td class="requirements-value">'.check_extension('iconv', get_lang('Yes'), get_lang('No'), true).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.intl.php" target="_blank">Internationalization</a> '.get_lang('support').' ('.get_lang('Optional').')</td> <td class="requirements-value">'.check_extension('intl', get_lang('Yes'), get_lang('No'), true).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.image.php" target="_blank">GD</a> '.get_lang('support').'</td> <td class="requirements-value">'.check_extension('gd', get_lang('Yes'), get_lang('ExtensionGDNotAvailable')).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.json.php" target="_blank">JSON</a> '.get_lang('support').'</td> <td class="requirements-value">'.check_extension('json', get_lang('Yes'), get_lang('No')).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.ldap.php" target="_blank">LDAP</a> '.get_lang('support').' ('.get_lang('Optional').')</td> <td class="requirements-value">'.check_extension('ldap', get_lang('Yes'), get_lang('ExtensionLDAPNotAvailable'), true).'</td> </tr> <tr> <td class="requirements-item"><a href="http://xapian.org/" target="_blank">Xapian</a> '.get_lang('support').' ('.get_lang('Optional').')</td> <td class="requirements-value">'.check_extension('xapian', get_lang('Yes'), get_lang('No'), true).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/en/book.curl.php" target="_blank">cURL</a> '.get_lang('support').' ('.get_lang('Optional').')</td> <td class="requirements-value">'.check_extension('curl', get_lang('Yes'), get_lang('No'), true).'</td> </tr> </table>'; echo ' </div>'; echo '</div>'; // RECOMMENDED SETTINGS // Note: these are the settings for Joomla, does this also apply for Chamilo? // Note: also add upload_max_filesize here so that large uploads are possible echo '<div class="RequirementHeading"><h2>'.get_lang('RecommendedSettings').'</h2>'; echo '<div class="RequirementText">'.get_lang('RecommendedSettingsInfo').'</div>'; echo '<div class="RequirementContent">'; echo '<table class="table"> <tr> <th>'.get_lang('Setting').'</th> <th>'.get_lang('Recommended').'</th> <th>'.get_lang('Actual').'</th> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/features.safe-mode.php">Safe Mode</a></td> <td class="requirements-recommended">'.Display::label('OFF', 'success').'</td> <td class="requirements-value">'.check_php_setting('safe_mode','OFF').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ref.errorfunc.php#ini.display-errors">Display Errors</a></td> <td class="requirements-recommended">'.Display::label('OFF', 'success').'</td> <td class="requirements-value">'.check_php_setting('display_errors','OFF').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ini.core.php#ini.file-uploads">File Uploads</a></td> <td class="requirements-recommended">'.Display::label('ON', 'success').'</td> <td class="requirements-value">'.check_php_setting('file_uploads','ON').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ref.info.php#ini.magic-quotes-gpc">Magic Quotes GPC</a></td> <td class="requirements-recommended">'.Display::label('OFF', 'success').'</td> <td class="requirements-value">'.check_php_setting('magic_quotes_gpc','OFF').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ref.info.php#ini.magic-quotes-runtime">Magic Quotes Runtime</a></td> <td class="requirements-recommended">'.Display::label('OFF', 'success').'</td> <td class="requirements-value">'.check_php_setting('magic_quotes_runtime','OFF').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/security.globals.php">Register Globals</a></td> <td class="requirements-recommended">'.Display::label('OFF', 'success').'</td> <td class="requirements-value">'.check_php_setting('register_globals','OFF').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ref.session.php#ini.session.auto-start">Session auto start</a></td> <td class="requirements-recommended">'.Display::label('OFF', 'success').'</td> <td class="requirements-value">'.check_php_setting('session.auto_start','OFF').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ini.core.php#ini.short-open-tag">Short Open Tag</a></td> <td class="requirements-recommended">'.Display::label('OFF', 'success').'</td> <td class="requirements-value">'.check_php_setting('short_open_tag','OFF').'</td> </tr> <tr> <td class="requirements-item"><a href="http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-httponly">Cookie HTTP Only</a></td> <td class="requirements-recommended">'.Display::label('ON', 'success').'</td> <td class="requirements-value">'.check_php_setting('session.cookie_httponly','ON').'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ini.core.php#ini.upload-max-filesize">Maximum upload file size</a></td> <td class="requirements-recommended">'.Display::label('>= '.REQUIRED_MIN_UPLOAD_MAX_FILESIZE.'M', 'success').'</td> <td class="requirements-value">'.compare_setting_values(ini_get('upload_max_filesize'), REQUIRED_MIN_UPLOAD_MAX_FILESIZE).'</td> </tr> <tr> <td class="requirements-item"><a href="http://php.net/manual/ini.core.php#ini.post-max-size">Maximum post size</a></td> <td class="requirements-recommended">'.Display::label('>= '.REQUIRED_MIN_POST_MAX_SIZE.'M', 'success').'</td> <td class="requirements-value">'.compare_setting_values(ini_get('post_max_size'), REQUIRED_MIN_POST_MAX_SIZE).'</td> </tr> <tr> <td class="requirements-item"><a href="http://www.php.net/manual/en/ini.core.php#ini.memory-limit">Memory Limit</a></td> <td class="requirements-recommended">'.Display::label('>= '.REQUIRED_MIN_MEMORY_LIMIT.'M', 'success').'</td> <td class="requirements-value">'.compare_setting_values(ini_get('memory_limit'), REQUIRED_MIN_MEMORY_LIMIT).'</td> </tr> </table>'; echo ' </div>'; echo '</div>'; // DIRECTORY AND FILE PERMISSIONS echo '<div class="RequirementHeading"><h2>'.get_lang('DirectoryAndFilePermissions').'</h2>'; echo '<div class="RequirementText">'.get_lang('DirectoryAndFilePermissionsInfo').'</div>'; echo '<div class="RequirementContent">'; $course_attempt_name = '__XxTestxX__'; $course_dir = api_get_path(SYS_COURSE_PATH).$course_attempt_name; //Just in case @unlink($course_dir.'/test.php'); @rmdir($course_dir); $perms_dir = array(0777, 0755, 0775, 0770, 0750, 0700); $perms_fil = array(0666, 0644, 0664, 0660, 0640, 0600); $course_test_was_created = false; $dir_perm_verified = 0777; foreach ($perms_dir as $perm) { $r = @mkdir($course_dir, $perm); if ($r === true) { $dir_perm_verified = $perm; $course_test_was_created = true; break; } } $fil_perm_verified = 0666; $file_course_test_was_created = false; if (is_dir($course_dir)) { foreach ($perms_fil as $perm) { if ($file_course_test_was_created == true) { break; } $r = @touch($course_dir.'/test.php',$perm); if ($r === true) { $fil_perm_verified = $perm; if (check_course_script_interpretation($course_dir, $course_attempt_name, 'test.php')) { $file_course_test_was_created = true; } } } } @unlink($course_dir.'/test.php'); @rmdir($course_dir); $_SESSION['permissions_for_new_directories'] = $_setting['permissions_for_new_directories'] = $dir_perm_verified; $_SESSION['permissions_for_new_files'] = $_setting['permissions_for_new_files'] = $fil_perm_verified; $dir_perm = Display::label('0'.decoct($dir_perm_verified), 'info'); $file_perm = Display::label('0'.decoct($fil_perm_verified), 'info'); $courseTestLabel = Display::label(get_lang('No'), 'important'); if ($course_test_was_created && $file_course_test_was_created) { $courseTestLabel = Display::label(get_lang('Yes'), 'success'); } if ($course_test_was_created && !$file_course_test_was_created) { $courseTestLabel = Display::label( sprintf( get_lang('InstallWarningCouldNotInterpretPHP'), api_get_path(WEB_COURSE_PATH).$course_attempt_name.'/test.php' ), 'warning' ); } if (!$course_test_was_created && !$file_course_test_was_created) { $courseTestLabel = Display::label(get_lang('No'), 'important'); } echo '<table class="table"> <tr> <td class="requirements-item">'.api_get_path(SYS_CODE_PATH).'inc/conf/</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_CODE_PATH).'inc/conf/').'</td> </tr> <tr> <td class="requirements-item">'.api_get_path(SYS_CODE_PATH).'upload/users/</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_CODE_PATH).'upload/users/').'</td> </tr> <tr> <td class="requirements-item">'.api_get_path(SYS_CODE_PATH).'default_course_document/images/</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_CODE_PATH).'default_course_document/images/').'</td> </tr> <tr> <td class="requirements-item">'.api_get_path(SYS_ARCHIVE_PATH).'</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_ARCHIVE_PATH)).'</td> </tr> <tr> <td class="requirements-item">'.api_get_path(SYS_COURSE_PATH).'</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_COURSE_PATH)).' </td> </tr> <tr> <td class="requirements-item">'.get_lang('CourseTestWasCreated').'</td> <td class="requirements-value">'.$courseTestLabel.' </td> </tr> <tr> <td class="requirements-item">'.get_lang('PermissionsForNewDirs').'</td> <td class="requirements-value">'.$dir_perm.' </td> </tr> <tr> <td class="requirements-item">'.get_lang('PermissionsForNewFiles').'</td> <td class="requirements-value">'.$file_perm.' </td> </tr> <tr> <td class="requirements-item">'.api_get_path(SYS_PATH).'home/</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_PATH).'home/').'</td> </tr> <tr> <td class="requirements-item">'.api_get_path(SYS_CODE_PATH).'css/</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_CODE_PATH).'css/', true).' ('.get_lang('SuggestionOnlyToEnableCSSUploadFeature').')</td> </tr> <tr> <td class="requirements-item">'.api_get_path(SYS_CODE_PATH).'lang/</td> <td class="requirements-value">'.check_writable(api_get_path(SYS_CODE_PATH).'lang/', true).' ('.get_lang('SuggestionOnlyToEnableSubLanguageFeature').')</td> </tr>'. //'<tr> // <td class="requirements-item">chamilo/searchdb/</td> // <td class="requirements-value">'.check_writable('../searchdb/').'</td> //</tr>'. //'<tr> // <td class="requirements-item">'.session_save_path().'</td> // <td class="requirements-value">'.(is_writable(session_save_path()) // ? '<strong><font color="green">'.get_lang('Writable').'</font></strong>' // : '<strong><font color="red">'.get_lang('NotWritable').'</font></strong>').'</td> //</tr>'. ''; echo ' </table>'; echo ' </div>'; echo '</div>'; if ($installType == 'update' && (empty($updatePath) || $badUpdatePath)) { if ($badUpdatePath) { ?> <div class="error-message"> <?php echo get_lang('Error'); ?>!<br /> Chamilo <?php echo (isset($_POST['step2_update_6']) ? implode('|', $update_from_version_6) : implode('|', $update_from_version_8)).' '.get_lang('HasNotBeenFoundInThatDir'); ?>. </div> <?php } else { echo '<br />'; } ?> <table border="0" cellpadding="5" align="center"> <tr> <td><?php echo get_lang('OldVersionRootPath'); ?>:</td> <td><input type="text" name="updatePath" size="50" value="<?php echo ($badUpdatePath && !empty($updatePath)) ? htmlentities($updatePath) : api_get_path(SYS_SERVER_ROOT_PATH).'old_version/'; ?>" /></td> </tr> <tr> <td colspan="2" align="center"> <button type="submit" class="back" name="step1" value="< <?php echo get_lang('Back'); ?>" ><?php echo get_lang('Back'); ?></button> <input type="hidden" name="is_executable" id="is_executable" value="-" /> <button type="submit" class="btn next" name="<?php echo (isset($_POST['step2_update_6']) ? 'step2_update_6' : 'step2_update_8'); ?>" value="<?php echo get_lang('Next'); ?> >" ><?php echo get_lang('Next'); ?></button> </td> </tr> </table> <?php } else { $error = false; // First, attempt to set writing permissions if we don't have them yet $perm = api_get_permissions_for_new_directories(); $perm_file = api_get_permissions_for_new_files(); $notwritable = array(); $curdir = getcwd(); $checked_writable = api_get_path(CONFIGURATION_PATH); if (!is_writable($checked_writable)) { $notwritable[] = $checked_writable; @chmod($checked_writable, $perm); } $checked_writable = api_get_path(SYS_CODE_PATH).'upload/users/'; if (!is_writable($checked_writable)) { $notwritable[] = $checked_writable; @chmod($checked_writable, $perm); } $checked_writable = api_get_path(SYS_CODE_PATH).'default_course_document/images/'; if (!is_writable($checked_writable)) { $notwritable[] = $checked_writable; @chmod($checked_writable, $perm); } $checked_writable = api_get_path(SYS_ARCHIVE_PATH); if (!is_writable($checked_writable)) { $notwritable[] = $checked_writable; @chmod($checked_writable, $perm); } $checked_writable = api_get_path(SYS_COURSE_PATH); if (!is_writable($checked_writable)) { $notwritable[] = $checked_writable; @chmod($checked_writable, $perm); } if ($course_test_was_created == false) { $error = true; } $checked_writable = api_get_path(SYS_PATH).'home/'; if (!is_writable($checked_writable)) { $notwritable[] = realpath($checked_writable); @chmod($checked_writable, $perm); } $checked_writable = api_get_path(CONFIGURATION_PATH).'configuration.php'; if (file_exists($checked_writable) && !is_writable($checked_writable)) { $notwritable[] = $checked_writable; @chmod($checked_writable, $perm_file); } // Second, if this fails, report an error //--> The user would have to adjust the permissions manually if (count($notwritable) > 0) { $error = true; echo '<div class="error-message">'; echo '<center><h3>'.get_lang('Warning').'</h3></center>'; printf(get_lang('NoWritePermissionPleaseReadInstallGuide'), '</font> <a href="../../documentation/installation_guide.html" target="blank">', '</a> <font color="red">'); echo '</div>'; echo '<ul>'; foreach ($notwritable as $value) { echo '<li>'.$value.'</li>'; } echo '</ul>'; } // Check wether a Chamilo configuration file already exists. elseif (file_exists(api_get_path(CONFIGURATION_PATH).'configuration.php')) { echo '<div class="warning-message"><h4><center>'; echo get_lang('WarningExistingDokeosInstallationDetected'); echo '</center></h4></div>'; } // And now display the choice buttons (go back or install) ?> <p align="center" style="padding-top:15px"> <button type="submit" name="step1" class="back" onclick="javascript: window.location='index.php'; return false;" value="< <?php echo get_lang('Previous'); ?>" ><?php echo get_lang('Previous'); ?></button> <button type="submit" name="step2_install" class="plus" value="<?php echo get_lang("NewInstallation"); ?>" <?php if ($error) echo 'disabled="disabled"'; ?> ><?php echo get_lang('NewInstallation'); ?></button> <input type="hidden" name="is_executable" id="is_executable" value="-" /> <?php // Real code echo '<button type="submit" class="save" name="step2_update_8" value="Upgrade from Dokeos 1.8.x"'; if ($error) echo ' disabled="disabled"'; // Temporary code for alpha version, disabling upgrade //echo '<input type="submit" name="step2_update" value="Upgrading is not possible in this beta version"'; //echo ' disabled="disabled"'; //end temp code echo ' >'.get_lang('UpgradeFromDokeos18x').'</button>'; echo ' <button type="submit" class="save" name="step2_update_6" value="Upgrade from Dokeos 1.6.x"'; if ($error) echo ' disabled="disabled"'; echo ' >'.get_lang('UpgradeFromDokeos16x').'</button>'; echo '</p>'; } }
<?php include_once "includes/common.inc"; drupal_page_header(); check_php_setting("magic_quotes_gpc", 0); menu_build("system"); $mod = arg(0); if (isset($mod) && module_hook($mod, "page")) { module_invoke($mod, "page"); } else { if (module_hook(variable_get("site_frontpage", "node"), "page")) { module_invoke(variable_get("site_frontpage", "node"), "page"); } else { theme("header"); theme("footer"); } } drupal_page_footer();
// remove mysqlnd from client info string, if found $mysql_ver = preg_replace('/^mysqlnd /', '', mysql_get_client_info()); echo '<p>' . get_lang('Please, read thoroughly the <a href="%installFileUrl">%installFileName</a> document before proceeding to installation.', array('%installFileUrl' => '../../INSTALL.txt', '%installFileName' => 'INSTALL.txt')) . '</p>' . '<fieldset>' . "\n" . '<legend>' . get_lang('Server requirements') . '</legend>' . "\n" . '<table class="requirements">' . '<tbody>' . "\n" . '<tr>' . '<td>Php version >= 5.2</td>' . '<td>' . (version_compare(phpversion(), $requiredPhpVersion, ">=") ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . ' (' . phpversion() . ')</td>' . '</tr>' . '<tr>' . '<td>MySQL version >= 4.3</td>' . '<td>' . (version_compare($mysql_ver, $requiredMySqlVersion, ">=") ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . ' (' . mysql_get_client_info() . ')</td>' . '</tr>' . '<tr>' . '<th colspan="2">' . get_lang('Required php extensions') . '</th>' . '</tr>' . '<tr>' . '<td>MySql</td>' . '<td>' . (extension_loaded('mysql') ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . '</td>' . '</tr>' . '<tr>' . '<td>Zlib compression</td>' . '<td>' . (extension_loaded('zlib') ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . '</td>' . '</tr>' . '<tr>' . '<td>Regular expressions</td>' . '<td>' . (extension_loaded('pcre') ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . '</td>' . '</tr>' . '<tr>' . '<td>XML</td>' . '<td>' . (extension_loaded('xml') ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . '</td>' . '</tr>' . '<tr>' . '<td>mbstring or iconv</td>' . '<td>'; if (extension_loaded('mbstring') || extension_loaded('iconv')) { echo '<span class="ok">' . get_lang('Ok') . '</span> ('; if (extension_loaded('mbstring')) { echo ' mbstring '; } if (extension_loaded('iconv')) { echo ' iconv '; } echo ')'; } else { echo '<span class="ko">' . get_lang('Ko') . '</span>'; } echo '</td>' . '</tr>' . '<tr>' . '<th colspan="2">' . get_lang('Optional php extensions') . '</th>' . '</tr>' . '<tr>' . '<td>GD</td>' . '<td>' . (extension_loaded('gd') ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . '</td>' . '</tr>' . '<tr>' . '<td>LDAP</td>' . '<td>' . (extension_loaded('ldap') ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . '</td>' . '</tr>' . '<tr>' . '<td>OpenSSL</td>' . '<td>' . (extension_loaded('openssl') ? '<span class="ok">' . get_lang('Ok') . '</span>' : '<span class="ko">' . get_lang('Ko') . '</span>') . '</td>' . '</tr>' . '</tbody>' . "\n" . '</table>' . '</fieldset>' . "\n\n" . '<fieldset>' . "\n" . '<legend>' . get_lang('Recommanded settings') . '</legend>' . "\n" . '<table class="requirements">' . "\n" . '<tr>' . "\n" . '<th>' . get_lang('Setting') . '</th>' . "\n" . '<th>' . get_lang('Recommended value') . '</th>' . "\n" . '<th>' . get_lang('Current value') . '</th>' . "\n" . '</tr>' . "\n" . '<tbody>' . "\n" . '<tr>' . "\n" . '<td>Safe mode</td>' . "\n" . '<td>Off</td>' . "\n" . '<td>' . check_php_setting('safe_mode', 'OFF') . '</td>' . "\n" . '</tr>' . "\n" . '<tr>' . "\n" . '<td>Display errors</td>' . "\n" . '<td>Off</td>' . "\n" . '<td>' . check_php_setting('display_errors', 'OFF') . '</td>' . "\n" . '</tr>' . "\n" . '<tr>' . "\n" . '<td>Register globals</td>' . "\n" . '<td>Off</td>' . "\n" . '<td>' . check_php_setting('register_globals', 'OFF') . '</td>' . "\n" . '</tr>' . "\n" . '<tr>' . "\n" . '<td>Magic quotes GPC</td>' . "\n" . '<td>Off</td>' . "\n" . '<td>' . check_php_setting('magic_quotes_gpc', 'OFF') . '</td>' . "\n" . '</tr>' . "\n" . '<tr>' . "\n" . '<td>File uploads</td>' . "\n" . '<td>On</td>' . "\n" . '<td>' . check_php_setting('file_uploads', 'ON') . '</td>' . "\n" . '</tr>' . "\n" . '<tr>' . "\n" . '<td>Upload max filesize</td>' . "\n" . '<td>8-100M</td>' . "\n" . '<td>' . ini_get('upload_max_filesize') . '</td>' . "\n" . '</tr>' . "\n" . '<tr>' . "\n" . '<td>Post max size</td>' . "\n" . '<td>8-100M</td>' . "\n" . '<td>' . ini_get('post_max_size') . '</td>' . "\n" . '</tr>' . "\n" . '</tbody>' . "\n" . '</table>' . "\n\n"; echo '</fieldset>' . "\n\n" . '<fieldset>' . "\n" . '<legend>' . get_lang('Directories and files permissions') . '</legend>' . "\n" . '<table class="requirements">' . "\n" . '<tbody>' . "\n"; $pathRoot = '../..'; $rootReadable = true; $rootWritable = true; if (!is_readable($pathRoot)) { $rootReadable = false; } if (!is_writable($pathRoot)) { $rootWritable = false; } $pathPlatform = '../../platform'; $platformReadable = true; $platformWritable = true; if (is_dir($pathPlatform)) { if (is_readable($pathPlatform)) {