Что я делаю неправильно в моем скрипте загрузки php? - PullRequest
0 голосов
/ 06 октября 2019

Итак, сегодня я попытался создать скрипт загрузки PHP, у меня возникла проблема ... Он не загружает файл, я посмотрел, где может быть проблема, и понял, что что-то не так с строкой if(move_uploaded_file($_FILES['file']['tmp_name'], $target_file)){, нужна ваша помощь, ребята

if(isset($_POST['but_upload'])){
       $maxsize = 5368706371; // 5GB

       $name = $_FILES['file']['name'];
       $target_dir = "videos/";
       $target_file = $target_dir . $_FILES["file"]["name"];
       $id = generateRandomString();

       // Select file type
       $videoFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

       // Valid file extensions
       $extensions_arr = array("mp4","avi","3gp","mov","mpeg");

        // Check extension
      if( in_array($videoFileType,$extensions_arr) ){

          // Check file size
          if(($_FILES['file']['size'] >= $maxsize) || ($_FILES["file"]["size"] == 0)) {
            echo "File too large. The file must be less than 5GB.";
          }else{
            // Upload
            if(move_uploaded_file($_FILES['file']['tmp_name'], $target_file)){
              echo ("working!");
            }
          }

      }else{
          echo "Invalid file extension.";
      }

     }
     ?>
<!doctype html>
<head lang="en">
</head>
<body>
<form method="post" enctype='multipart/form-data'>
        <input type="file" name="file" id="file">
        <input type="submit" name="but_upload">
    </form>
</body>
</html>

Функция generateRandomString находится в другом файле

РЕДАКТИРОВАТЬ: error.log говорит мне, что:

[06-Oct-2019 16:26:49 America/New_York] PHP Warning:  move_uploaded_file(videos/VSkzuJn0aZYoLvNLJwv3IrFNA9PV1zjfd4MfoXP3rjl1Nm7uW8--Peek 2019-05-20 18-11.mp4): failed to open stream: No such file or directory in /home/myacc/website.com/index.php on line 34

[06-Oct-2019 16:26:49 America/New_York] PHP Warning:  move_uploaded_file(): Unable to move '/tmp/phpTOsPRj' to 'videos/VSkzuJn0aZYoLvNLJwv3IrFNA9PV1zjfd4MfoXP3rjl1Nm7uW8--Peek 2019-05-20 18-11.mp4' in /home/myacc/website.com/index.php on line 34

1 Ответ

2 голосов
/ 06 октября 2019

с использованием videos/ в качестве пути указывает на то, что папка для загрузки находится в текущем рабочем каталоге, и, хотя этот опыт работы показал, что использование полного пути всегда оказывалось более надежным - так что, возможно, это может помочь?

$target_dir = __DIR__ . "/videos/";

if( !file_exists( $target_dir ) ){
    mkdir( $target_dir, 0777, true );
    clearstatcache();
}

$target_file = $target_dir . $_FILES["file"]["name"];// ... etc as before
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...