0

このコードを使用して、ファイルのダウンロードをログに記録しています。

define('LOG_DOWNLOADS',true);
define('LOG_FILE','logs/downloads.log');

// log downloads
if (!LOG_DOWNLOADS) die();

$f = fopen(LOG_FILE, 'a+');
if ($f) {
  fputs($f, date("m.d.Y g:ia")."  ".$_SERVER['REMOTE_ADDR']."  ".$fname."\r\n");
  fclose($f);
}

コードは、次のようなログ ファイルをローカルで出力する際に​​完全に機能します。

08.21.2012 6:31pm  127.0.0.1  1.test1.mp3
08.21.2012 6:32pm  127.0.0.1  1.test2.mp3

しかし、Godaddy でホストされている私のドメインでは動作しませんか? 理由がわかりました。ファイルのアクセス許可でしょうか。

4

1 に答える 1

0

次のことを試してください。

  • まず、すべての@記号を削除して、表示されるエラーメッセージを正確に把握できるようにします。

  • 存在するかどうかlogs/downloads.log、そしてそれがそれに割り当てられた権限は何であるかを確認しますか?また、フルパスを与えることをお勧めしますlogs/downloads.log

このスクリプトを試すことができますか?問題の原因を追跡できるかどうかを確認するために、条件チェックを追加しました。

<?
error_reporting(E_ALL);
define('LOG_DOWNLOADS',true);
define('LOG_FILE','downloads.log');

// log downloads
if (!LOG_DOWNLOADS) die("Not logging downloads");

$f = fopen(LOG_FILE, 'a+');
if ($f) {
  if(!fputs($f, date("m.d.Y g:ia")."  ".$_SERVER['REMOTE_ADDR']."  ".$fname."\r\n"))
  {
    die("Could not write into file ". LOG_FILE);
  }
  if(!fclose($f))
  {
    die("Could not fclose file ". LOG_FILE);
  }
}
else
{
    die("Could not fopen file ". LOG_FILE);
}

die("Finished logging..");
?>
于 2012-08-21T16:48:06.297 に答える