Я использую PHP для обработки загрузок файлов .jpg, .gif, .jpeg, .png, .zip и .rar в каталог upload/
. Разрешено загружать файлы только авторизованным пользователям (с заданным паролем). Я дал папку upload/
ownership www-data:www-data
с соответствующими правами доступа, так что это не проблема.
Загрузка работает отлично, пока я загружаю веб-сайт прямо на сервер, на котором размещается весь сайт, и который связан с определенным доменом. Если я перейду на другой компьютер и попытаюсь загрузить zip-файл через веб-сайт на сервер, я получаю сообщение с Invalid file
и ничто не будет загружено или сохранено в базе данных. Вот мой код:
$allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = end(explode(".", $_FILES["fajl"]["name"])); $allowedExts1 = array("zip", "rar"); $extension1 = end(explode(".", $_FILES["fajl"]["name"])); if ((($_FILES["fajl"]["type"] == "image/gif") || ($_FILES["fajl"]["type"] == "image/jpeg") || ($_FILES["fajl"]["type"] == "image/png") || ($_FILES["fajl"]["type"] == "image/pjpeg")) && ($_FILES["fajl"]["size"] < 4000000) && in_array($extension, $allowedExts)) { if ($_FILES["fajl"]["error"] > 0) { echo "Return Code: " . $_FILES["fajl"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["fajl"]["name"] . "<br />"; echo "Type: " . $_FILES["fajl"]["type"] . "<br />"; echo "Size: " . ($_FILES["fajl"]["size"] / 1024) . " KB<br />"; echo "Temp file: " . $_FILES["fajl"]["tmp_name"] . "<br />"; if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/upload/slike/' . $nav . '/' . $_FILES["fajl"]["name"])) { echo $_FILES["fajl"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["fajl"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'] . '/upload/slike/' . $nav . '/' . $_FILES["fajl"]["name"]); echo "Stored in: " . $_SERVER['DOCUMENT_ROOT'] . '/upload/slike/' . $nav . '/' . $_FILES["fajl"]["name"]; $pomlokacijasl='/upload/slike/' . $nav . '/' . $_FILES["fajl"]["name"]; $query22 = "INSERT INTO `slike` (navig, slik) VALUES ('$nav', '$pomlokacijasl')"; $query22 = mysql_query($query22) or trigger_error ("Error in query: $query22. ".mysql_error()); mysql_free_result($query22); } } } else if ((($_FILES["fajl"]["type"] == "application/x-rar-compressed") || ($_FILES["fajl"]["type"] == "application/zip")) && ($_FILES["fajl"]["size"] < 25000000) && in_array($extension1, $allowedExts1)) { if ($_FILES["fajl"]["error"] > 0) { echo "Return Code: " . $_FILES["fajl"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["fajl"]["name"] . "<br />"; echo "Type: " . $_FILES["fajl"]["type"] . "<br />"; echo "Size: " . ($_FILES["fajl"]["size"] / 1024) . " KB<br />"; echo "Temp file: " . $_FILES["fajl"]["tmp_name"] . "<br />"; if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/upload/datoteke/' . $nav . '/' . $_FILES["fajl"]["name"])) { echo $_FILES["fajl"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["fajl"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'] . '/upload/datoteke/' . $nav . '/' . $_FILES["fajl"]["name"]); echo "Stored in: " . $_SERVER['DOCUMENT_ROOT'] . '/upload/datoteke/' . $nav . '/' . $_FILES["fajl"]["name"]; $pomlokacijadat='/upload/datoteke/' . $nav . '/' . $_FILES["fajl"]["name"]; $query22 = "INSERT INTO `datoteke` (navig, dat) VALUES ('$nav', '$pomlokacijadat')"; $query22 = mysql_query($query22) or trigger_error ("Error in query: $query22. ".mysql_error()); mysql_free_result($query22); } } } else { echo "Invalid file"; }
Как я могу это решить? Будет ли добавлено $_SERVER('DOCUMENT_ROOT')
в $_SERVER('SERVER_NAME')
?