2

move_uploaded_file 関数を使用してファイルをアップロードしています。ファイルは適切なディレクトリに移動され、その物理的な存在は確認できますが、開くことができません。「アクセスが拒否されました」というエラーが表示されます。ファイルのプロパティを表示すると、所有者がいないことがわかりました。

ところで、私は Windows 2008 で IIS を実行しています。

権限を確認すると、すべてが正しく設定されています。Web サービスを実行しているユーザーには、完全な管理者権限があります。

さらに、move_uploaded_file 関数を copy() に置き換えたところ、ファイルにアクセスできるようになりました。また、サーバーを実行しているユーザーを所有者として持っていました。

一体何が間違っている可能性がありますか?

ありがとうございます。

更新: ファイルを移動した後、chmod($filename,0655) を使用してアクセス許可を設定しようとしましたが、それも機能しませんでした。

更新 2 (解決策): わかりました。システム管理者は upload_tmp_dir を設定しませんでした。パスを追加すると機能しました。

ソースコード:

         // Check if file was uploaded
     if(isset($_FILES['formname']) && $_FILES['formname']['size'] > 8){
         $displayName = $_FILES['formname']['name'];
            $displayName = unixfilename(basename($displayName));

            $tempName = $_FILES['formname']['tmp_name'];

         $filename = $_FILES['formname']['name'];
         $fileType = substr($filename, strrpos($filename,".")+1);
         $filename = substr($filename,0,strrpos($filename,".")) . date("_Ymd_His") . ".$fileType"; // Add unique identifier
         $filename = unixfilename(basename($filename)); 

         $destinationPath = "xx\yy\zz\\";

         // Check if the file is of a valid type
         if($fileType == "txt"){
             // Check if file exists in processor folder
             if(!file_exists($destinationPath.$filename)){
                if(move_uploaded_file($tempName,$destinationPath.$filename)){
                    if(file_exists($destinationPath.$filename)){
 // success
4

2 に答える 2

0

実際にアップロードを行ったユーザーを確認する

echo exec('whoami');
于 2010-11-01T21:04:08.783 に答える