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 回答