Я только что просмотрел журнал ошибок apache, и файл огромен! Там не было никаких ошибок на самом сайте и ни один не выводимые на PHP, но в журнале ошибок существует много неопределенных переменных и т.д.Журнал ошибок Apache показывает ошибки PHP, но ошибки, выводимые 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
, что уведомление идентифицирует получается из запроса тузд и идентифицирован как таковой;
$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
}
Line 189:
WHERE E.ID = '$ID'
GROUP BY E.E_ID
ORDER BY E.timestamp DESC LIMIT 20"
Показать us artist_profile.php line 189? – crush
Это не ошибки. Это уведомление, и это последующие сообщения. –
@Patrick Итак, почему они происходят? Переменная определена –