PHP mkdir не работает без ошибок

Я пытаюсь настроить небольшой сервер обмена файлами в локальной сети моего дома и сталкиваюсь с некоторыми большими проблемами с загрузчиком. шаг, на котором, по-видимому, происходит сбой, является этапом создания каталога, однако, когда я впервые опубликовал это, в файлах журнала Apache не было ошибок, что, как оказалось, было результатом проблемы с разрешениями для файлов задержки.

это соответствующие записи журнала.

[Mon Mar 25 18:43:05 2013] [error] [client 10.0.0.17] PHP Warning:  mkdir(): Permission denied in /server/upload_movie.php on line 10, referer: http://10.0.0.17/upload_movie.html

это сбивает меня с толку, потому что я запустил sudo chmod 0777 /server/* sudo chmod 0777 /server с / server /, являющимся каталогом rood.

мой код выглядит следующим образом

<?php
echo "starting". "<br>";
$allowedExts = array("mp4", "mpg", "avi", "mkv");
$extension = end(explode(".", $_FILES["uplodedfile"]["name"]));
echo "filetype parsed". "<br>";
$path = "/downloads/movies/unsorted/";
echo "checking upload directory". "<br>";
if(!is_dir($path)){
    echo "upload directory not found, creating...";
    if (mkdir($path,0777,true))
        {
        echo "directory creation complete". "<br>";
        }
    else
        {
        echo "directory creation failed at ".$path."<br>";
        }
}
echo "checking file". "<br>";
if (false)
  {
  echo "filetype and size passed". "<br>";
  if ($_FILES["uplodedfile"]["error"] > 0)
    {
    header('Location:  upload_failure.php?file='.$_FILES["uplodedfile"]['name'].'&error='.$_FILES["uplodedfile"]["error"]);
    exit();
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["uplodedfile"]["name"]))
      {
       echo $_FILES["file"]["name"] . " already exists on server. ". "<br>";
      }
    else
      {
      echo "creating perminant copy of file". "<br>";
      move_uploaded_file($_FILES["uplodedfile"]["tmp_name"],
      $path."/" . $_FILES["uplodedfile"]["name"]);
      echo "Stored in: " . "movie_uploads/" . $_FILES["file"]["name"]. "<br>";
      }
    }
    header('Location:  upload_success.php?type=movie');
    exit();
  }
else
  {
  echo "error:<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Name: " . $_FILES["file"]["name"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
  echo "extension: ".$extension;
  exit();
  // echo "Invalid file";
  }
?>

вывод выглядит следующим образом

starting
filetype parsed
checking upload directory
upload directory not found, creating...directory creation failed at /downloads/movies/unsorted/
checking file
error:
Type: 
Name: 
Size: 0 kB
Temp file: 
extension:

и код, называющий это

<form enctype="multipart/form-data" action="upload_movie.php" method="POST">
<input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

я перепробовал все предложения в PHP mkdir: проблема с разрешением доступа, и у меня отключен selinux. Я использую Fedora 17. Сервер работает на разделе ext4, который не содержит ничего другого.

как было предложено в комментариях, я попытался $error = error_get_last(); echo $error['message']; который получил неопределенный индекс: файл

2 ответа

Ваше сообщение об ошибке говорит обо всем в этом. Это проблема с правами на запись в файл. Если вы хотите записать свой файл в /downloads/movies/unsorted/, то вам нужно установить разрешение на запись в этот каталог для всех (777). Но вы говорите, что вы уже проверили разрешение для каталога загрузок, но вы не можете установить разрешение для повторяющихся каталогов. Поэтому попробуйте команду ниже перед загрузкой файла.

Sudo chmod -R 777 /download

Похоже, вы установили правильные разрешения для /server-directory. Но ваш сервер хочет написать в каталог /downloads-. Вы должны начать работать с этой командой:

Sudo chmod 777 /download
Другие вопросы по тегам