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 ディレクトリー作成成功しました。
?>
お礼
cliomaxさん、ありがとうございました。 これらを参考に考えたいと思います。