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