phpでファイルのアップロードをするプログラムを作成しています。
当初 move_uploaded_file を使い意外と簡単に作れたのですが、ファイルの所有者がApacheになってしまいます。
何故、ファイルの所有者が Apache でまずいのかというと、ユーザーの使用域を quota で制限しているのですが、所有者がApacheになっていると、制限ができません。
(ユーザーのエリアにアップロードしても、ユーザーが Apache になっていると、使用済み容量が増えません。)
そこで、アップロード後 chown で所有者を変更しようと思いましたが、ルート権限でないと変更できないようで、うまく行きませんでした。
マニュアルを見ていると ftp_connect で接続し ftp_login でログインしてから ftp_put で転送してやれば所有者をログイン時のユーザーにできそうと思い作成したのですが、
<FORM method="post" action="hoge.php" enctype="multipart/form-data">
:
:
<input name="userfile" size="60" type="file">
では、hoge.phpに転送元のファイル名がうまく引き渡されません。
よい知恵はないでしょうか。
尚、サーバー側の環境は
Fedora 1
Apache/2.0.48
PHP Version 4.3.4
です。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
直接的な解決方法ではないのですが、「困り度3で直ぐに解凍が欲しい」とされているので一時的な方法として。
move_uploaded_fileで簡単に実装できたのでしたら、root権限でcronを走らせて、ユーザのディレクトリにあるファイルの所有権はすべてユーザのものにしてしまう、なんてのはどうでしょうか。
根本的な解決になってなくてごめんなさい。
解答ありがとうございます。
とても、参考になりました。
とりあえず、m-kurさんの方法で、対処しようとおもいます。
他の方法があるかもしれないので、もうしばらく締め切らないでおきます。
No.2
- 回答日時:
PHP上から直接システムコマンドで権限を変更してしまうのが理想ですが、
スクリプトがapacheの権限で動いているので変更不可能
と言う点が問題なんですよね…
私の体験談ですが、
権限を変更するsystem命令を記述した
PHPもしくはPerlスクリプトを作り
ファイルの権限をrootにしてCGIで実行させました。
(例:system("chown $user $filename");)
レス遅れて申し訳ありません。
早速、教えていただいた方法を試して見たのですが、思ったようにはいきません。
> 権限を変更するsystem命令を記述した
> PHPもしくはPerlスクリプトを作り
> ファイルの権限をrootにしてCGIで実行させました。
> (例:system("chown $user $filename");)
これは、権限を変更するスクリプトファイルのオーナーをrootにするということでいいんですよね?
グル-プも含めて変更しましたが、実行しても変更したいファイルのオーナは変更されませんでした。
その際、エラーも出てきませんでした。
他に、何か設定が必要なのでしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- サーバー Laravelをレンタルサーバーにインストールするにはどうすればいいですか? 2 2022/06/29 10:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
PHPでファイルアップロードを中...
-
youtubeに音声のみのmp4ファイ...
-
ファイルサイズがpost_max_size...
-
move_uploaded_fileで他のサー...
-
リンク先を隠す方法はないでし...
-
ImageCreate関数が undefined f...
-
libmcrypt の使用について
-
PHPのif文でその処理を途中で抜...
-
ローカル環境でのメール送信
-
ZendFrameworlkでZend_Session...
-
use と requireの違いは?
-
【PHP】tmp_nameの命名規約につ...
-
ワードプレスサイト PHP8.0.25...
-
PHPからPerlにデータを渡して結...
-
mb_send_mailを実行するとエラ...
-
phpでうまく画像がダウンロード...
-
PHP ページング データベース
-
URLの変わらないページをPHPで...
-
PHPで文字列(日本語)の比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
ファイルアップロードの上限を...
-
youtubeに音声のみのmp4ファイ...
-
FTPClientで転送結果(OKかFAIL)
-
one drive のアップロード失敗...
-
unlinkでどうしてもファイルが...
-
ファイルをGET送信でアップロー...
-
ftpでアップロードが出来ない
-
ファイルサイズがpost_max_size...
-
aws cloud9というものを使って...
-
PHPでxmlをAPIに送信する方法(P...
-
DUMPした巨大SQLファイルをイン...
-
ファイルアップロードについて...
-
PHPMailerで大きなファイルが送...
-
全角ファイル名をアップロード...
-
SmartyでHTMLソースの変更が反...
-
Struts2 ファイルアップロード
-
画像ファイルの名前をそのままU...
-
VBでクラウドストレージにア...
-
サーバーにアップロードしたい
おすすめ情報