1

自宅のローカル ネットワークに小さなファイル共有サーバーをセットアップしようとしていますが、アップローダーで大きな問題が発生しています。失敗しているように見えるステップはディレクトリ作成ステップですが、これを最初に投稿したとき、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: Permission denied problemのすべての提案を試しましたが、selinux をオフにしました。私は fedora 17 を使用しています。サーバーは、他に何も含まれていない ext4 パーティションで実行されています。

コメントで提案されたように、 $error = error_get_last(); を試しました。echo $error['メッセージ']; 未定義のインデックス: ファイル

4

2 に答える 2

0

あなたのエラーメッセージはその中のすべてを伝えています。これはファイルの書き込み許可の問題です。ファイルを /downloads/movies/unsorted/ に書き込みたい場合は、このディレクトリへの書き込み権限をすべて (777) に設定する必要があります。しかし、ダウンロード ディレクトリのアクセス許可は既に確認しましたが、定期的なディレクトリのアクセス許可を設定していない可能性があります。ファイルをアップロードする前に、以下のコマンドを試してください。

Sudo chmod -R 777 /download
于 2013-03-26T05:55:15.880 に答える
0

/server-directory に正しい権限を設定したようです。しかし、サーバーは /downloads- ディレクトリに書き込みたいと考えています。次のコマンドで起動して実行する必要があります。

Sudo chmod 777 /download
于 2013-03-26T04:59:45.053 に答える