0

我刚刚查看了 apache 错误日志,文件很大!网站本身没有错误,PHP也没有输出任何错误,但在错误日志中有许多未定义的变量等。

这里有几个例子:

[Fri May 31 14:04:15 2013] [error] [client 127.0.0.1] PHP Notice:  Undefined variable: ID in C:\\wamp\\www\\artist_profile.php on line 189, referer: http://localhost/Discover

[Fri May 31 14:04:15 2013] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://localhost/Discover

[Fri May 31 14:04:15 2013] [error] [client 127.0.0.1] PHP   1. {main}() C:\\wamp\\www\\artist_profile.php:0, referer: http://localhost/Discover

我不知道为什么会发生这种情况,显然需要在网站上线之前对其进行排序。

我真的无法提供更多信息,因为我一无所知。我玩过includeand include_once,交换它们,但这没有效果。我唯一的另一个想法是该站点使用历史 API 脚本通过 ajax 获取页面而无需完全刷新。可能是因为只有部分新页面被加载,错误正在被记录。但我不明白为什么他们会登录 apache 而不会输出到浏览器中。

编辑

通知正在识别的变量$ID是从 mysql 查询中获取的并被识别为这样;

$ID = $row['ID'];//never echo this

第 189 行就$ID在另一个查询中。我可以在页面的任何地方回显 $ID 并且不会显示错误。顺便说一句,该评论是为了提醒任何人出于安全原因不要附和它。

编辑在哪里$ID设置。

<?php require("includes/database.php"); 
       $url = $_SERVER["REQUEST_URI"]; //get url for db
       $url = substr($url, 1);
       $result = mysql_query ("SELECT * ,
                              (SELECT COUNT(*) FROM artist_follows WHERE follows_ID = A.ID) AS followers,
                              (SELECT COUNT(*) FROM artist_follows WHERE ID = A.ID) AS following,
                              (SELECT COUNT(*) FROM tracks WHERE ID = A.ID) AS tracks
                              FROM artists A WHERE url = '$url' LIMIT 1");
       $count = mysql_num_rows($result);
       if ($count === 0){
       //redirect to 404
       header ("location:404");
       }
       while($row = mysql_fetch_array($result)){
          $ID = $row['ID'];//never echo this           
      }

第 189 行:

WHERE E.ID = '$ID'
GROUP BY E.E_ID
ORDER BY E.timestamp DESC LIMIT 20"
4

2 回答 2

1

尝试在文件开头添加:

error_reporting(E_ALL);
ini_set("display_errors", 1);
于 2013-05-31T13:16:48.917 回答
1

这是因为它们只是通知。这些可能在您的php.ini. 您可以通过编辑激活它,也可以简单地添加到您的脚本中

error_reporting(E_ALL);
ini_set("display_errors", 1);

您可能想查看文档

于 2013-05-31T13:16:11.913 回答