2008-08-06 9 views
13

Webサーバー上のフォルダにファイルをアップロードするためのPHPを作成しようとしています。ここで私が持っているものです。PHPエラー - ファイルをアップロードする

<?php 
    if (!empty($_FILES['file']['tmp_name'])) { 
     move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']); 
     header('Location: http://www.mywebsite.com/dump/'); 
     exit; 
    } 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html> 
    <head> 
     <title>Dump Upload</title> 
    </head> 
    <body> 
     <h1>Upload a File</h1> 
     <form action="upload.php" enctype="multipart/form-data" method="post"> 
      <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" /> 
      Select the File:<br /><input type="file" name="file" /><br /> 
      <input type="submit" value="Upload" /> 
     </form> 
    </body> 
</html> 

私はこれらのエラーを取得しています:

警告:move_uploaded_file(./ test.txtの)[function.moveアップロードファイル]:ストリームをオープンに失敗しました: 3行目のE:¥inetpub¥vhosts¥mywebsite.com¥httpdocs¥dump¥upload.phpのアクセス許可が拒否されました。

警告:move_uploaded_file()[function.move-uploaded-file] WINDOWS \ Temp \ phpA30E.tmp 'を3行目のE:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.phpにコピーします。

警告:E:\ inetpub \ vhosts \ mywebsite.com \のヘッダー情報 - 既に送信されたヘッダー(E:\ inetpub \ vhosts \ mywebsite.com \ httpdocs \ dump \ upload.php: httpdocs \ dump \ upload.php 4行目

PHPバージョン4.4.7 IISをWindowsボックスで実行しています。この特定のファイル/フォルダには777の権限があります。

アイデア?

答えて

8

Windowsの場合、実際の777はありません。chmodを使用している場合は、Windows関連のコメントを確認してください。パスを追加

E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\ 
C:\WINDOWS\Temp\ 
1

警告:move_uploaded_file()[function.move-uploaded-file]:E:\ inetpub \ vhosts \に「C:\ WINDOWS \ Temp \ phpA30E.tmp」を「./people.xml」に移動できません。ライン上のmywebsite.com \をhttpdocs \ダンプの\ upload.php 3

は、それはあなたがそれをしたいファイルを置くことができないと言うと、これは通常、権限の問題

は、プロセスの実行を確認することが重要ラインでありますアプリケーション(通常はphp用のwebserversプロセス)にファイルを書き込む権利があります。

EDIT:

ビット にハングアップする私は少しは正しい最初の行にあるファイルへのパスで銃を跳びましたか?

3

てみてください:IISアカウントがこれらの2つのフォルダ(読み取り、書き込み、変更)にアクセスできることを

チェック。次のコードは、私の作品:

<?php 

if (!empty($_FILES['file'])) { 
    $from = $_FILES['file']['tmp_name']; 
    $to = dirname(__FILE__).'/'.$_FILES['file']['name']; 

    if(move_uploaded_file($from, $to)){ 
     echo 'Success'; 
    } else { 
     echo 'Failure'; 
    } 

    header('Location: http://www.mywebsite.com/dump/'); 
    exit; 
} 
?> 
17

OMG

move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name']); 

はそれをしないでください。 $_FILES['file']['name']../../../../boot.iniまたは任意の数の悪いものである可能性があります。あなたはこの名前を信じてはいけません。ファイルの名前を変更し、元の名前とあなたのランダムな名前を関連付ける必要があります。最低でもbasename($_FILES['file']['name'])を使用してください。

1

もう一つは、観察することだと思うあなたは、Windowsのボックスに/使用している、ディレクトリの区切り..です

1

は、「ダンプのフォルダのセキュリティpersmissionsグループ内のIISのユーザーを追加し、それが読み取り/書き込みアクセス権を与えます。

0

フォルダの許可を得て、 "イメージ" という名前のフォルダを作成します777

<?php 
    move_uploaded_file($_FILES['file']['tmp_name'],"image/".$_FILES['file']['name']); 
?> 
関連する問題