- 締切済み
PHPにて所有者名を変更出来る方法を教えて下さい。
下記プログラムのように、あるサーバーの中のデーターをディレクトリー(/hogehoge)ごと別の ディレクトリー(../test)にコピーを行い、FFFTPにてファイルの更新を行いたいのですが、 コピー後は所有者名が変わってしまい属性(パーミッション)の変更が出来ず、修正や削除も出来ません。 どうも所有者名がApacheになっているようです。 勿論プログラム上からなら削除や修正は可能ですが、どうしてもFFFTPから操作出来ないと困るのです。 プログラムから所有者名を指定する方法を教えて戴きたいのです。 FFFTPで見ますと、所有者名は今までのどのファイルもディレクトリーも数字で、「1664」ですが、 PHPで作成コピーしたファイルを見ますと「48」です。 所有者名を「1664」にしたいのです。 そうすればパーミッションの変更が出来ると思います。 因みにこの方法を試しましたが変更出来ませんでした。 使い方が間違っているのでしょうか。それともスーパーユーザでないからかもしれません。 スーパーユーザにはどうしてなれるのでしょうか。 // 使用するファイル名とユーザ名 $file_name= "foo.php"; $path = "/home/sites/php.net/public_html/sandbox/" . $file_name ; $user_name = "root"; // ユーザを設定します chown($path, $user_name); 所有者名変更方法(末端の階層ディレクトリー及びファイルまで)をご教授下さいませ。 以上宜しくお願い致します。 <?php //あらかじめ指定された元フォルダ名 $imageDir = "hogehoge"; // 作りたいフォルダ構造 $structure = '../test'; // 入れ子構造を作るには、$recursive パラメータを // mkdir() に指定しなければなりません if (!mkdir($structure, 0777, true)) { die('Failed to create folders...'); } chmod($structure, 0777); $path = '../test/'; $user_name = 'myname'; // ユーザを設定します chown($path, $user_name); //あらかじめ指定されたコピー先フォルダ名 $destDir = "../test"; copyDirectory($imageDir,$destDir); function copyDirectory($imageDir, $destDir) { $handle=opendir($imageDir); while($filename=readdir($handle)) { if(strcmp($filename,".")!=0 && strcmp($filename,"..")!=0) { if(is_dir("$imageDir/$filename")) { if(!empty($filename) && !file_exists("$destDir/$filename")) mkdir("$destDir/$filename"); copyDirectory("$imageDir/$filename","$destDir/$filename"); } else { if(file_exists("$destDir/$filename")) unlink("$destDir/$filename"); copy("$imageDir/$filename","$destDir/$filename"); } } } } print ディレクトリー作成成功しました。 ?>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- taka451213
- ベストアンサー率47% (436/922)
- taka451213
- ベストアンサー率47% (436/922)
- notnot
- ベストアンサー率47% (4903/10364)
- wormhole
- ベストアンサー率28% (1626/5665)
補足
>パーミッションの変更は可能です。 但しプログラムからなら。 >FFFTPにてファイルの更新を行いたいのですが、 できるじゃない・・・。 ■出来ません。 >ところがプログラム上でしかパーミッションの変更も出来ません。 >それは、私にとっては意味の無いことなのです。 >この意味がわからん・・・。 >パーミッションが「777」とかになっていれば、編集できるのでいいのでは??? 1000個くらいあるファイルを全て777にすることも出来ないのです。といいますか、全てのファイルのパーミッションの変更の仕方が分かりません。 それで、プログラミングを行った後に必要なファイルのみを必要に応じて手修正したいのです。 それにプログラム上から、色々なファイルをchmodで755にしたり644にしたりは難しいです。 ところがFFFTPだとその都度パーミッションの変更を行い、又元に戻せる気軽さがありますね。 FFFTPだと所有者名がApacheになっていて、FFFTPでは全く権限が無く触れません。 FFFTPで自由に加工出来るようにしたいのですが。 以上宜しくお願いします。