Файл: install/steps/paths.php
Строк: 40
<?php
function step($is_submit){
if ($is_submit){
return check_writables();
}
$root = str_replace(DOC_ROOT, '', str_replace(DS, '/', dirname(PATH)));
$sp = session_save_path();
if (!$sp) {
$sp = sys_get_temp_dir();
}
$sp = rtrim($sp, '/');
$uniq = uniqid();
if(mkdir($sp.DS.$uniq, 0755, true) && is_writable($sp.DS.$uniq)){
$sp = $sp.DS.$uniq;
}
$paths = array(
'session_save_path' => $sp,
'root' => $root . '/',
'upload' => $root . '/' . 'upload' . '/',
'cache' => $root . '/' . 'cache' . '/'
);
$protocol = 'http://';
if(
(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ||
(!empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) ||
(!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
){
$protocol = 'https://';
}
$hosts = array(
'root' => $protocol . rtrim($_SERVER['HTTP_HOST'], '/') . $root,
'upload' => $protocol . rtrim($_SERVER['HTTP_HOST'], '/') . $root . '/upload',
);
$open_basedir = @ini_get('open_basedir'); $open_basedir_hint = '';
if($open_basedir){
$open_basedirs = explode(PATH_SEPARATOR, $open_basedir);
$open_basedir_hint = LANG_PATHS_SESSIONS_BASEDIR.implode(', ', $open_basedirs);
}
$result = array(
'html' => render('step_paths', array(
'doc_root' => DOC_ROOT,
'open_basedir_hint' => $open_basedir_hint,
'root' => $root,
'paths' => $paths,
'hosts' => $hosts
))
);
return $result;
}
function check_writables(){
$error = false;
$message = '';
$paths = $_POST['paths'];
$hosts = $_POST['hosts'];
$hosts['root'] = rtrim($hosts['root'], '/');
$hosts['upload'] = rtrim($hosts['upload'], '/');
$upload = rtrim(DOC_ROOT . $paths['upload'], '/');
$cache = rtrim(DOC_ROOT . $paths['cache'], '/');
if (empty($paths['upload']) || empty($paths['cache']) ||
empty($paths['session_save_path']) || empty($hosts['root']) ||
empty($hosts['upload']) || empty($paths['root'])){
return array(
'error' => true,
'message' => LANG_ADMIN_ERROR
);
}
if (!is_writable($upload)){
$error = true;
$message = LANG_PATHS_UPLOAD_PATH . ' '. LANG_PATHS_NOT_WRITABLE . "n" . LANG_PATHS_WRITABLE_HINT;
} else
if (!is_writable($cache)){
$error = true;
$message = LANG_PATHS_CACHE_PATH . ' '. LANG_PATHS_NOT_WRITABLE . "n" . LANG_PATHS_WRITABLE_HINT;
} else
if (!is_writable($paths['session_save_path'])){
$error = true;
$message = LANG_PATHS_SESSION_PATH . ' '. LANG_PATHS_NOT_WRITABLE . "n" . LANG_PATHS_WRITABLE_HINT;
}
if (!$error){
$_SESSION['install']['paths'] = $paths;
$_SESSION['install']['hosts'] = $hosts;
}
return array(
'error' => $error,
'message' => $message
);
}