各 Windows マシンの共有ローカル ディレクトリにある作業ファイルを編集して、PHP ベースの Web アプリケーションを開発しています。次に、(Linux) ステージング サーバーが共有ドライブをマウントし、それぞれのサブドメインでそれらを提供します。たとえば、joe.work.com は Joe の作業ディレクトリを提供します。次に、サブドメインがステージング サーバーを指すように hosts ファイルを編集して、独自のステージング サイトにアクセスします。
現在、アップロードされたファイルを tmp ディレクトリからマウントされたディレクトリ内のディレクトリ (実際には共有 Windows ドライブです...?) に移動する権限が PHP にないように見えるという問題に直面しています。
Windows マシンの作業ディレクトリは全員に rw を許可するように設定されており、ステージング マシンのマウントされたディレクトリに 777 を配置しようとしましたが、まだ許可が拒否されます。
たとえば、共有ドライブは\\joes_machine\joes_working_dir
、ステージング サーバーの にマウントされます/var/mnt/joe
。ファイルのアップロードを に移動する必要があります/images/common
。
この例では少し馬鹿げていますが、私はコードに関して派手なことは何もしていません。
$working_directory = '/var/mnt/joe';
$image_directory = '/images/common/';
$full_filename = $working_directory . $image_directory . $filename;
if(move_uploaded_file($_FILES['photo']['tmp_name'], $full_filename))
// do some other stuff
もちろん私のエラーは次のとおりです。
Message: move_uploaded_file(/var/mnt/joe/images/common/resulting_filename.jpg):
failed to open stream: Permission denied
Message: move_uploaded_file(): Unable to move '/tmp/phpjsEfBc' to
'/var/mnt/joe/images/common/resulting_filename.jpg'
Linux によってネットワーク経由でマウントされている Windows 共有ドライブに関連するファイルのアクセス許可と、それに書き込む必要がある PHP について、私は何を理解していませんか? ハングアップが見つからないようです。
本番環境に入ると、スキーマを使用しなくなりますが、現在の開発環境で継続できる簡単なソリューションがあれば、それが理想的です!