
下記プログラムのように、あるサーバーの中のデーターをディレクトリー(/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 ディレクトリー作成成功しました。
?>
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんばんは。
>パーミッションの変更は可能です。
じゃぁ、
>FFFTPにてファイルの更新を行いたいのですが、
できるじゃない・・・。
>ところがプログラム上でしかパーミッションの変更も出来ません。
>それは、私にとっては意味の無いことなのです。
この意味がわからん・・・。
パーミッションが「777」とかになっていれば、編集できるのでいいのでは???
目的がわからない。
この回答への補足
>パーミッションの変更は可能です。
但しプログラムからなら。
>FFFTPにてファイルの更新を行いたいのですが、
できるじゃない・・・。
■出来ません。
>ところがプログラム上でしかパーミッションの変更も出来ません。
>それは、私にとっては意味の無いことなのです。
>この意味がわからん・・・。
>パーミッションが「777」とかになっていれば、編集できるのでいいのでは???
1000個くらいあるファイルを全て777にすることも出来ないのです。といいますか、全てのファイルのパーミッションの変更の仕方が分かりません。
それで、プログラミングを行った後に必要なファイルのみを必要に応じて手修正したいのです。
それにプログラム上から、色々なファイルをchmodで755にしたり644にしたりは難しいです。
ところがFFFTPだとその都度パーミッションの変更を行い、又元に戻せる気軽さがありますね。
FFFTPだと所有者名がApacheになっていて、FFFTPでは全く権限が無く触れません。
FFFTPで自由に加工出来るようにしたいのですが。
以上宜しくお願いします。
No.3
- 回答日時:
こんばんは。
ソースを見る限り、コピーした後のフォルダを権限変更してませんが・・・?
普通にコピーした後、そのフォルダに対して「chmod」するのが普通かと・・・。
ご回答有り難うございます。
いまこのソースリストには書き込んではおりませんが、所有者の変更を何度も試みております。
それで駄目だったので質問をさせて戴いております。
パーミッションの変更は可能です。
ところがプログラム上でしかパーミッションの変更も出来ません。
それは、私にとっては意味の無いことなのです。
あくまでも所有者名が変更したいのです。
そうでないと自由にファイルが触れません。
所有者名変更は何回も試みておりますが、プログラム上でも駄目でした。
宜しくお願いします。
No.2
- 回答日時:
>それともスーパーユーザでないからかもしれません。
お察しの通り、chownはスーパーユーザで無いと実行できないのが普通です。
>スーパーユーザにはどうしてなれるのでしょうか。
サーバー管理者しかなれません。
何をしたいかによりますが、
案1: PHPで作ったファイル・ディレクトリを chmod で otherユーザの書き込み権をつける
案2: あらかじめftpでファイル・ディレクトリを作っておき、PHPから書けるようにotherユーザの書き込み権をつけておく
有り難うございました。
案1も試みましたが、chmod で書き込み権の変更が出来ませんでした。
自分の好きな権限を与えればそれでも良かったのですが、なぜか変更が出来ませんでした。
案2は出来ません。
全て最初はブログラムを走らせ自動で幾つもコピーを繰り返すので手動でディレクトリーは津隠れません。
あきらめるしか無いみたいですね。
色々ご丁寧な回答有り難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
現在位置より2つ上のディレク...
-
FTPコマンドでディレクトリごと...
-
MkDir関数
-
Permission denied in
-
VB2008でFTPでのディ...
-
Subversionのリポジトリの削除
-
phpのheader("Location:#pos")...
-
.htaccessにphp_valueが使用できな
-
*.php、*.php3、*.phtmlの違い
-
mysql→EUC-JP、php→UTF-8の時の...
-
phpでメール送信できません 原...
-
phpのextension_dirを複数指定...
-
phpの中でphpを書けないか
-
PHP PDOライブラリが読み込まれ...
-
mamp環境でのcronの使い方で困...
-
PHPでメールを受信するには?
-
再度、xamppにおけるjpgraphの...
-
セッションについての設定なの...
-
2つの画像ファイルが異なるファ...
-
require_once()でファイルが読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
makefile でファイルをコピーす...
-
rmdirでフォルダが消せません
-
visualstudioでc#のdllができない
-
Visual C++ 2005 Express Editi...
-
ロケットBBSについて
-
phpのftp_putについて
-
現在位置より2つ上のディレク...
-
define でのルートディレクト...
-
ハッスルサーバーで海外からWP...
-
VB.NET 最下位のディレクトリ名...
-
絶対パス?絶対アドレス?意味...
-
レンタルサーバーでPDF出力
-
MkDir関数
-
図に示す階層構造で,現在のデ...
-
【BAT(バッチ)ファイル】Web...
-
http://localhost/に.htaccess...
おすすめ情報