
いつもお世話になっております。
Permissionのことがよく理解できていないので、よろしくお願いします。
実現したいこと
PHPスクリプトで、ファイルを選択して同一ドメイン上にあるファイルサーバーにアップロードする処理です。
実行環境
Webサーバー
・Windows2012
・IIS8
・PHP5.4
ファイルサーバー(アップロード先)
・Windows2019
両者は同一ドメイン上にあります。
発生している問題・エラーメッセージ
アップロード先が同一サーバーでは問題なく動くのですが、同一ドメイン上にある別のファイルサーバー(IIS無し)だと動作しません。
failed to open stream: Permission denied
該当のソースコード
PHP
1<html lang="ja"> 2<head> 3<meta charset="utf-8"> 4</head> 5<body> 6<h1>アップロード処理のサンプル</h1> 7<form enctype="multipart/form-data" method="post"> 8<input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 9<input name="file" type="file"> 10<input type="submit" name="_upload" value="アップロード"> 11</form> 12<?php 13//[アップロード]ボタンの押下確認 14if (isset($_POST['_upload'])) { 15 $filename = './'.$_FILES['file']['name']; // カレントディレクトリ OK 16 //ファイルをテンポラリから保存場所へ移動(但し本来は渡されたファイル名をそのまま使うのは危険) 17 $filename = '\\\hogehoge\\doc\\'.$_FILES['file']['name']; // サーバー名 NG 18// $filename = '\\\192.168.1.111\\doc\\'.$_FILES['file']['name']; // IPアドレス NG 19 print $filename; 20 if (move_uploaded_file($_FILES['file']['tmp_name'], $filename)) { 21 echo $_FILES['file']['name'].'をアップロードしました'; 22 } else { 23 //エラー処理 24 } 25} 26?> 27</body> 28</html>
試したこと
▽アップロード先が同一サーバー
・アップロード先のフォルダに対し、IUSRへの「書き込み権限」付与 → 正常に動作。
▽アップロード先が別サーバー(IISの動いていないファイルサーバ)
・アップロード先のフォルダに対し、IUSRへの「書き込み権限」付与 → 同じエラー。
・アップロード先のフォルダに対し、everyoneへの「書込み権限」付与 → 同じエラー。
・アップロード先のフォルダに対し、hogehoge$への「書込み権限」付与 → 同じエラー。
・アップロード先のフォルダに対し、IUSR_WPGへの「書込み権限」付与 → 同じエラー。
・アップロード先のフォルダに対し、IIS_IUSRSへの「書き込み権限」付与 → 同じエラー。
▽パスの記述変更
・$filename = './192.168.1.111/edoc/'.$_FILES['file']['name']; に変更
→ failed to open stream: No such file or directory のエラー。
▽ファイルサーバー側のローカルセキュリティポリシー変更
・セキュリティオプションで下記の項目を変更
ネットワークアクセス:Everyoneのアクセス許可を匿名ユーザーに適応する:有効
ネットワークアクセス:匿名でアクセスできる共有:フォルダ名(doc)を入力
ネットワークアクセス:ローカルアカウントの共有とセキュリティモデル」:Guestのみ
→ 同じエラー





回答1件
あなたの回答
tips
プレビュー