diff --git a/adminer/include/editing.inc.php b/adminer/include/editing.inc.php index df1ebe2e..bc40d4cc 100644 --- a/adminer/include/editing.inc.php +++ b/adminer/include/editing.inc.php @@ -366,3 +366,17 @@ function tar_file($filename, $contents) { $return .= sprintf("%06o", $checksum) . "\0 "; return $return . str_repeat("\0", 512 - strlen($return)) . $contents . str_repeat("\0", 511 - (strlen($contents) + 511) % 512); } + +/** Get INI bytes value +* @param string +* @return int +*/ +function ini_bytes($ini) { + $val = ini_get($ini); + switch (strtolower(substr($val, -1))) { + case 'g': $val *= 1024; // no break + case 'm': $val *= 1024; // no break + case 'k': $val *= 1024; + } + return $val; +} diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 04b79888..9a5c40bb 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -571,7 +571,7 @@ function get_file($key, $decompress = false) { * @return string */ function upload_error($error) { - $max_size = ($error == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : null); // post_max_size is checked in index.php + $max_size = ($error == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : 0); // post_max_size is checked in index.php return ($error ? lang('Unable to upload a file.') . ($max_size ? " " . lang('Maximum allowed file size is %sB.', $max_size) : "") : lang('File does not exist.')); } diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php index 762f0273..e4d135f5 100644 --- a/adminer/sql.inc.php +++ b/adminer/sql.inc.php @@ -25,12 +25,12 @@ if (!$error && $_POST) { : "compress.bzip2://adminer.sql.bz2" )), "rb"); $query = ($fp ? fread($fp, 1e6) : false); - } elseif ($_FILES && $_FILES["sql_file"]["error"] != 4) { // 4 - UPLOAD_ERR_NO_FILE + } elseif ($_FILES && $_FILES["sql_file"]["error"] != UPLOAD_ERR_NO_FILE) { $query = get_file("sql_file", true); } if (is_string($query)) { // get_file() returns error as number, fread() as false if (function_exists('memory_get_usage')) { - @ini_set("memory_limit", max(ini_get("memory_limit"), 2 * strlen($query) + memory_get_usage() + 8e6)); // @ - may be disabled, 2 - substr and trim, 8e6 - other variables + @ini_set("memory_limit", max(ini_bytes("memory_limit"), 2 * strlen($query) + memory_get_usage() + 8e6)); // @ - may be disabled, 2 - substr and trim, 8e6 - other variables } if ($query != "" && strlen($query) < 1e6) { // don't add big queries $q = $query . (ereg(';$', $query) ? "" : ";"); //! doesn't work with DELIMITER |