文件写入错误

时间:2012-08-21 16:43:47

标签: php file

我使用此代码记录文件下载:

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托管的域名上工作不起作用?现在想出为什么,也许是文件权限?

1 个答案:

答案 0 :(得分: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..");
?>