質問: "Z:/"; touch($file_path.'test_'.date('YmdHis').'.txt'); exec("net use Z: /delete"); exit; ``` この処理はしばらくの間正常に機能していたのですが、最近になってファイルを作成出来なくなってしまいました。 現在この処理はコマンドプロンプトでPHPを実行するとうまくいくのですが、 Apache経由で処理を行うとファイルが作成できません。おそらく実行ユーザーの問題だと思うのですが。。。 つい先日まではApache経由でも正常に動いていました。 また、$file_pathにドライブレターではなく、UNCパスを指定するとApache経由でもファイルの作成ができます。 exec関数からエラー情報なども取得できず、ちゃんとした原因が分かっていません。 何か考えられる原因はありますでしょうか。
回答: > > 「apacheで作成してるファイルを、ターミナルのユーザで作成すると、その後apache経由で作成できなくなったりとか。」が起きるのはなぜでしょうか。 > > > ファイルには所有者というものがあって、Aさんが作成したファイルを、Bさんが更新したりファイルを削除できなくなっているからです。 ネットワークドライブをマウントしてファイルを作成しているということなので、 おそらくローカルにファイルが作成されているのではなく、リモートでファイルが作成されていて、 ドライブレターならローカルのファイルが見れるけど、リモートにあるファイルを見る場合はUNCパスを利用しないといけないということなのかなと思います。 コマンドプロンプトで実行した場合は、ドライブレターからUNCパスへの変換がうまくいっててアクセスできるが、 apache経由だと、変換されていないのでアクセスできないということかなと。