我刚刚看了一下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
我不知道为什么会这样,显然需要在网站上线之前对其进行排序。
我无法提供更多相关信息,因为我一无所知。我在玩include
和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"
答案 0 :(得分:1)
这是因为它们只是通知。这些可能已在php.ini
中停用。您可以通过编辑来激活,也可以直接添加脚本
error_reporting(E_ALL);
ini_set("display_errors", 1);
您可能需要查看documentation
答案 1 :(得分:1)
尝试在文件的开头添加:
error_reporting(E_ALL);
ini_set("display_errors", 1);