スレッド表示 | フラット表示〕 全トピック 920 件中 600 番目 次≫ ≪前

ファイルの新規作成でのapache回避について

created: 2004-05-26 02:41 | modified: 2004-06-03 00:10 | reply: 3

[1617] ファイルの新規作成でのapache回避について

user: dson ホームページ | created: 2004-05-26 02:41
PHP RINGの方に最近参加させていただいた
dsonといいます。
まず、PHP RING参加の挨拶が遅れました事をお詫びいたしますm(_ _)m

あと、早速質問で恐縮なのですが・・・^^;
現在、アクセス解析結果をログファイル(20040526.log、20040527.log・・・)
に出力させるスクリプトを組んでいます。

ですが、出力されたログファイルの所有者の
名前がapacheとなってしまいました。

ファイル新規書き込みで、所有者を自分にする
方法はありませんでしょうか?

何か。良い方法があればご教授していただけませんでしょうか?

よろしくお願いいたします。

下記に現在作成中のコードを上げておきます。
        // ログファイル名作成
$LogName = ACC_PATH.(string)date('ymd',time()).".log";

// ファイルの有無チェック
if( file_exists($LogName) )
{
// ファイルのオープン(追記)
$fp = fopen($LogName,"a");
}
else
{
// ファイルのオープン(新規)
$fp = fopen($LogName,"w");
}

// ファイルオープンエラー
if( $fp == FALSE )
{
exit( "PHP ERROR!!NOT OPEN " );
}

// 排他的ロック
flock($fp,LOCK_EX) or exit("PHP ERROR!! Lock on ACCESS LOG");

// 暗号化
$HenIP = AnaGlam($IpAdr); // IPアドレス
$HenHst = AnaGlam($HstNm); // ホスト名

// リファーデータ無しの処理
if( empty($refer) )
{
$refer = "直リン";
}

// ブラウザ情報の取得
$Browser = Sub_GetBrows($Agent);

// OS情報の取得
$os = Sub_GetBrows($Agent);

// データ加工後書込み
$buf = $HenIP . SEPA_KEY . $HenHst . SEPA_KEY . $refer .
SEPA_KEY . $url .
SEPA_KEY . $Browser .
SEPA_KEY . $os .
SEPA_KEY.(string)date('H:i:s',time())."\r\n";
fwrite($fp,$buf);

// ロック解除
flock($fp,LOCK_UN);

// ファイルのクローズ
fclose($fp);
reply: 1619 返信 編集 削除

[1619] ファイルの所有者を変更する

user: ゆうじ | created: 2004-05-26 19:38
dsonさん、まいどお世話になってます。

私も同じことで困った覚えがあります。
そのときはファイルが数える程でしたので、
FTPクライアントから操作した覚えがあります。

実際に試しませんでしたが、
これについて調べた時の記憶では、

・FTP関数経由
・CGI版PHP経由

という手があるようでした。

具体的でなくてすみません。
Parent: 1617  reply: 1624 返信 編集 削除

[1624] Re:ファイルの所有者を変更する

user: dson ホームページ | created: 2004-05-28 00:13
ゆうじさん回答有難うございました。

現在借りているレンタルサーバー(ロリポップ)が
CGI版PHPかどうか分からないためFTP関数
経由、もしくは外部実行によるCGI起動
で行こうと思います。

また、上手くいきましたらご報告いたします。
Parent: 1619  reply: 1634 返信 編集 削除

[1634] 解決しました。

user: dson ホームページ | created: 2004-06-03 00:10
CGI版PHPは使用できず、FTP関数もセキュリティ上あまり使いたくなかったので、色々と小細工を使い解決しました。

こんなコードにしました。
        // ホストの取得
$HstNm = gethostbyaddr($IpAdr);

// 各ファイル名の作成
$LogName = ACC_PATH."acc.log"; // ログファイル
$FileIdx = ACC_PATH."file.idx"; // ファイルインデックス
$TodayIdx = ACC_PATH."today.idx"; // 最終ログファイル日付
$WorkFile = ACC_PATH."work.dat"; // 一時保存用ファイル

// ファイルの有無チェック
if( !file_exists($LogName) )
{
exit( "PHP ERROR!!NOT FOUND ".$LogName );
}
else if( !file_exists($FileIdx) )
{
exit( "PHP ERROR!!NOT FOUND ".$FileIdx );
}
else if( !file_exists($TodayIdx) )
{
exit( "PHP ERROR!!NOT FOUND ".$TodayIdx );
}
else if( !file_exists($WorkFile) )
{
exit( "PHP ERROR!!NOT FOUND ".$WorkFile );
}

// 現在日付を取得
$now = (string)date('ymd',time());

// ファイルのオープン
$fp = fopen($TodayIdx,"r");

// オープンエラーチェック
if( $fp == FALSE )
{
exit( "PHP ERROR!!NOT OPEN ".$TodayIdx );
}

// 最終ログファイル日付の読み込み
$logday = (int)fgets($fp);

// ファイルのクローズ
fclose($fp);

// 最終ログ日付と現在の日付が違う?
if( $logday != $now )
{
// ファイルのオープン
$fp = fopen($TodayIdx,"w");

// オープンエラーチェック
if( $fp == FALSE )
{
exit( "PHP ERROR!!NOT OPEN ".$TodayIdx );
}

// 排他的ロック
flock($fp,LOCK_EX) or exit("PHP ERROR!! Lock on TODAY INDEX");

// 最終ログ日付更新
fwrite( $fp , $now );

// ロック解除
flock($fp,LOCK_UN);

// ファイルのクローズ
fclose($fp);

// 一時保存用ファイルサイズ取得
$size = filesize($WorkFile);

// ファイルのオープン
$fp = fopen( $WorkFile , "r" );

// オープンエラーチェック
if( $fp == FALSE )
{
exit( "PHP ERROR!!NOT OPEN ".$TodayIdx );
}

// 一時保存用ファイルをバッファに格納
$buf = fread($fp, $size);

// ファイルのクローズ
fclose($fp);

// 一時保存用ファイルにログ存在
if( $size != 0 )
{
// ファイルのオープン
$fp = fopen( $LogName , "a" );

// オープンエラーチェック
if( $fp == FALSE )
{
exit( "PHP ERROR!!NOT OPEN ".$TodayIdx );
}

// 排他的ロック
flock($fp,LOCK_EX) or exit("PHP ERROR!! Lock on ACCESS LOG");

// バッファをログに書き出し
fwrite( $fp , $buf , $size );

// ロック解除
flock($fp,LOCK_UN);

// ファイルのクローズ
fclose($fp);
}

// ファイルのオープン
$fp = fopen( $FileIdx , "a" );

// オープンエラーチェック
if( $fp == FALSE )
{
exit( "PHP ERROR!!NOT OPEN ".$TodayIdx );
}

// 排他的ロック
flock($fp,LOCK_EX) or exit("PHP ERROR!! Lock on FILE INDEX");

// ファイルインデックス追加
fwrite( $fp , $now."|".$size."\r\n" );

// ロック解除
flock($fp,LOCK_UN);

// ファイルのクローズ
fclose($fp);


// ファイルのオープン
$fp = fopen( $WorkFile , "w" );
}
else
{
// ファイルのオープン
$fp = fopen( $WorkFile , "a" );
}

// ファイルオープンエラー
if( $fp == FALSE )
{
exit( "PHP ERROR!!NOT OPEN " );
}

// 排他的ロック
flock($fp,LOCK_EX) or exit("PHP ERROR!! Lock on WORK FILE");

// 暗号化
$HenIP = AnaGlam($IpAdr); // IPアドレス
$HenHst = AnaGlam($HstNm); // ホスト名

// リファーデータ無しの処理
if( empty($refer) )
{
$refer = "直リン";
}

// ブラウザ情報の取得
$Browser = Sub_GetBrows($Agent);

// OS情報の取得
$os = Sub_GetOsChk($Agent);

// データ加工後書込み
$buf = $HenIP . SEPA_KEY . $HenHst . SEPA_KEY . $refer .
SEPA_KEY . $url .
SEPA_KEY . $Browser .
SEPA_KEY . $os .
SEPA_KEY.(string)date('H:i:s',time())."\r\n";
fwrite($fp,$buf);

// ロック解除
flock($fp,LOCK_UN);

// ファイルのクローズ
fclose($fp);
Parent: 1624  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 600 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑