static function Open() { // Check if native PHP methods should be used - Test 1 self::$native = is_writable(DOC_ROOT) && getmyuid() == fileowner(DOC_ROOT) ? true : false; // Check if native PHP methods should be used - Test 2 if (self::$native) { // Create temporary file $native_check_file = DOC_ROOT . '/native-check' . time(); $handle = @fopen($native_check_file, 'w'); @fwrite($handle, 'Native Check'); // Check if webserver/PHP has filesystem access self::$native = fileowner($native_check_file) == getmyuid() ? true : false; // Remove temporary file @fclose($handle); @unlink($native_check_file); } // Login to server via FTP if PHP doesn't have write access if (!self::$native) { // Set FTP login settings global $settings; self::$ftp_hostname = $settings->ftp_hostname; self::$ftp_username = $settings->ftp_username; self::$ftp_password = $settings->ftp_password; self::$ftp_path = $settings->ftp_path; self::$ftp_ssl = $settings->ftp_ssl; // Connect to FTP host if (self::$ftp_ssl) { if (!function_exists('ftp_ssl_connect')) { throw new Exception("Your host doesn't support FTP over SSL connections."); } self::$ftp_stream = @ftp_ssl_connect(self::$ftp_hostname); } else { self::$ftp_stream = @ftp_connect(self::$ftp_hostname); } if (!self::$ftp_stream) { throw new Exception("Unable to connect to FTP host (" . self::$ftp_hostname . ")"); } // Login with username and password if (!@ftp_login(self::$ftp_stream, self::$ftp_username, self::$ftp_password)) { throw new Exception("Unable to login to FTP server (Username: '******', Password: '******')"); } } return self::$native ? 'native' : 'ftp'; }
$config_content = preg_replace('/{FTP_USER}/i', $settings->ftp_username, $config_content); $config_content = preg_replace('/{FTP_PASS}/i', $settings->ftp_password, $config_content); $config_content = preg_replace('/{FTP_PATH}/i', $settings->ftp_path, $config_content); $config_content = preg_replace('/{FTP_SSL}/i', $settings->ftp_ssl ? 'true' : 'false', $config_content); // Save database settings to config file in permanent location $perm_config_file = DOC_ROOT . '/cc-core/config/config.php'; FilesystemInstaller::Open(); FilesystemInstaller::Create($perm_config_file); FilesystemInstaller::Write($perm_config_file, $config_content); FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/bin', 0777); FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/bin/qtfaststart', 0777); FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart', 0777); FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart/exceptions.py', 0777); FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart/__init__.py', 0777); FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart/processor.py', 0777); FilesystemInstaller::Close(); // Store information & redirect user $settings->db_hostname = $hostname; $settings->db_name = $name; $settings->db_username = $username; $settings->db_password = $password; $settings->db_prefix = $prefix; $settings->completed[] = 'database'; $_SESSION['settings'] = serialize($settings); header("Location: " . HOST . '/cc-install/?site-details'); exit; } catch (Exception $e) { $error_msg = $e->getMessage(); } } else { $error_msg = '<p>Errors were found. Please correct them and try again.<br /><br /> - ';