PHP move_uploaded_file приводит к ошибке # 1 - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь загрузить файл на внешний сервер на основе этого кода: https://www.w3schools.com/php/php_file_upload.asp.
На моей локальной машине все работает нормально, но при загрузке точно такого же сценария на внешний сервер это не такработать больше.При отладке с помощью:

$_FILES["fileToUpload"]["error"]

я получаю ошибку №1 в ответ, хотя я использую тот же php.ini, что и на моей локальной машине.Папка uploads/ существует, и пользователь www-data также имеет права на ее запись.Я доказал это, запустив file_put_contents("uploads/test.txt", "working");.Единственное, о чем я могу подумать, это разница версий PHP (Local: 7.2.5; External: 7.2.19) или, может быть, отсутствующий модуль php?!

Было бы здорово, если бы кто-то мог помочь мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

ОК, я был глуп. Я изменил неправильный файл php.ini. Для тех, кто сталкивается с подобными проблемами, вы можете проверить местоположение файла php.ini и загружен ли он PHP с помощью:

$inipath = php_ini_loaded_file();

if ($inipath) {
    echo 'Loaded php.ini: ' . $inipath;
} else {
    echo 'A php.ini file is not loaded';
}

Надеюсь, это поможет.

0 голосов
/ 16 июня 2019

Попробуйте с полным путем , используя $ _ SERVER ['DOCUMENT_ROOT'] , также попытайтесь создать рекурсивно ваши папки, используя mkdir с 3-м параметр, установленный в true (если не существует ваш путь), увеличивает ваш upload_max_filesize, как это было предложено Андреасом, в комментарии ... вот псевдо-рабочий пример ...

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Upload</title>
</head>
<body>
<form name="form" method="post" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Upload File: <input type="file" size="30" id="fileToUpload" name="fileToUpload">
<?php
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/upload/var/www/html/";
if (!is_dir($upload_dir)) { 
  @mkdir($upload_dir, 0755, true);
}
if ((isset($_FILES['fileToUpload']['name'])) && (!empty($_FILES['fileToUpload']['name']))) {
  $temp_name = $_FILES['fileToUpload']['tmp_name'];
  $file_name = $_FILES['fileToUpload']['name'];
  $file_path = $upload_dir.$file_name;
  $upload_process = move_uploaded_file($temp_name, $file_path);
  @chmod($file_path,0755);
}
if ((isset($upload_process)) && ($upload_process == TRUE)) {
  echo "File Uploaded With Success...";
}
if ((!isset($upload_process)) || ($upload_process == FALSE)) {
  echo "Please, Upload some File...";
}
?>
<input type="submit" name="submit" value="Upload">
</form>

</body>

</html>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...