こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでWindowsのローカルドライブに書き込みたい

PHP初心者ですが、PHPのファイル操作で質問があります。

サーバー上にあるファイルをWindowsのクライアントのフォルダに保存したいのですが、サーバーの作業ディレクトリに保存されてしまいます。
以下のようなテストプログラムで実験しています。(エラー処理は省略)

$server_file_data=file_get_contents('server.dat');
$local_file = 'd:\\temp\\local.dat';
$cfp = fopen($local_file, "wb");
fwrite($cfp,$server_file_data);
fclose($cfp);

このPHPを走らせるとサーバーのカレントフォルダ上に d:\temp\local.datが作成されます。 Windows用のパスまでがファイル名に入っちゃってます。

ローカルのドライブにPHPが書き込むという動作がセキュリティ上望ましくないことは理解していますが、ここでは技術的な解決策をどなたかご教授できるでしょうか?

よろしくお願いします。

投稿日時 - 2007-01-11 12:45:09

QNo.2658427

困ってます

質問者が選んだベストアンサー

harutomo777 さん、こんばんは。

さて おたずねの件ですが、
「その PHP スクリプトを実行すると、ダイアログボックスが開いて、ファイルを指定してクライアント側にそれをダウンロードすることができる」
ということでいいのであれば、下記 URL を参照してみてください。では。

参考URL:http://www.spencernetwork.org/memo/tips-5.php

投稿日時 - 2007-01-11 21:36:08

お礼

多少、マニュアルの操作が必要ですが、簡単に導入できそうなので、試してみましたが、この関数をcallした後、すべての画面表示ができなくなってしまい、困ってしまいました。 おそらくheaderをもう一度出力し直せばよいのではいろいろやってみましたがわかりませんでした。
ただ関数自体はちゃんと動いていて、とても便利なのですが。

ご教授ありがとうございました。

投稿日時 - 2007-01-18 03:03:01

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

イントラネットや社内LANのようにネットワーク管理者やIT責任者がいてクライアントの環境や運用まで指示できる社内権限を持っていれば可能ですが、オープンなネットワーク環境では条件を揃えることが困難なので事実上不可能と言ってよいでしょう。

以下はあくまで「技術的な解決策」ということでイントラネットで検証済みの策です。

(1)イントラネット上にあるWebサーバ(本サーバ)とは別に、各クライアントPCでもPHPが使えるWebサーバーソフトを稼動させる(手元サーバ)
(2)本サーバ上に入力欄FORMを持つpost.htmlを置く。
POST先はhttp://localhost/put.phpと記述します
(3)手元サーバにはPOSTを受けてファイルを書き出すput.phpを置く

これでクライアントPCから本サーバ上のpost.htmlを呼び出し[送信]すると手元サーバのput.phpに制御が移りローカルディスクに書き込むことができます。

各クライアントPCでWebサーバーソフトを稼動させた場合メモリーは占有しますが待機状態ではCPUにはほとんど負荷がかかりませんから仕事に影響は出ないはずです。

手元サーバ(クライアントPC)に「ローカルにファイルを書き出す機能」が入ってしまうとイントラネットのホームページにアクセスしただけでPCの新しいファイル(htmlだったりPHPだったり・・・)を書き込むめたりするので可能性は無限大。危険も無限大です。

投稿日時 - 2007-01-12 11:25:39

お礼

ご回答ありがとうございます。
クライアントにもwebサーバーソフトを入れてPHPをローカルで走らせるという考えはすごいですね。今回の件ではご指摘のとおりセキュリティの問題でこの方法は難しいですが、勉強になりました。ありがとうございます。

投稿日時 - 2007-01-18 03:00:02

ANo.2

Windows用のFTPサーバを動かしてFTPでファイルを送るとか

投稿日時 - 2007-01-11 14:15:54

お礼

解答ありがとうございます。
結局は手でFTP使って持ってくるしか方法がなさそうです。

投稿日時 - 2007-01-18 03:05:07

ANo.1

結論から申しますとそれは仕様上無理なのでできないです。
こんなことが可能になったら恐ろしいことがたくさんできますし。
ローカル側のデータをいじれるのはcookieファイルのみです。

投稿日時 - 2007-01-11 12:51:42

お礼

確かに恐ろしいですよね。。

ご回答ありがとうございました。

投稿日時 - 2007-01-18 03:05:49

あなたにオススメの質問