The Night Fury
Участник
- Сообщения
- 1,300
- Реакции
- 1,395
Доброго времени суток, форумчане.
Решив проблему, я подумал, что обсудить всё-таки стоит, поэтому, собственно, топик и создаю.
Суть
Какое-то время назад я поставил себе систему мониторинга LGSL 5.8. Всё было нормально, не видел сбоев, но потом ВНЕЗАПНО стали появляться баги.
Самым большим стал баг отправки информации хидера (функция в файле admin.php). Проблема заключалась в том, что после входа в админ-панель я не мог ничего сделать — любой переход по ссылкам внутри файла заканчивался фейлом, постоянно выкидывало на admin.php с просьбой войти. Перерыл систему, порылся в скриптах — нет толку. Ну и хрен с ним, ведь есть phpMyAdmin, верно? Только вот кэш там не сбросить было.
Вот сегодня пришлось удалить один из серверов, ну и из мониторинга тоже надо было удалить.
Порывшись как следует ещё раз, я решил изменить конфигурацию сайта: сменил конфигурацию "Использовать PHP как модуль CGI" на "Использовать PHP как модуль Apache" (ПУ — ISP Manager, если что). Ограничений нет, чтоб не спрашивали.
Ну и всё, ошибка исчезла.
Ошибка
Сама ошибка в логах как-то странно выглядела:
В admin.php на строке 19 содержится соответственно:
Вопрос
Итак, "починить" получилось при помощи простой установки PHP как модуля Apache.
Вопрос: почему же так получается, что хидэр не получается изменить?
Вопрос 2: в чём может быть причина такого сбоя? Ничего не изменялось на сервере, но баг появился, несмотря на это.
Решив проблему, я подумал, что обсудить всё-таки стоит, поэтому, собственно, топик и создаю.
Суть
Какое-то время назад я поставил себе систему мониторинга LGSL 5.8. Всё было нормально, не видел сбоев, но потом ВНЕЗАПНО стали появляться баги.
Самым большим стал баг отправки информации хидера (функция в файле admin.php). Проблема заключалась в том, что после входа в админ-панель я не мог ничего сделать — любой переход по ссылкам внутри файла заканчивался фейлом, постоянно выкидывало на admin.php с просьбой войти. Перерыл систему, порылся в скриптах — нет толку. Ну и хрен с ним, ведь есть phpMyAdmin, верно? Только вот кэш там не сбросить было.
Вот сегодня пришлось удалить один из серверов, ну и из мониторинга тоже надо было удалить.
Порывшись как следует ещё раз, я решил изменить конфигурацию сайта: сменил конфигурацию "Использовать PHP как модуль CGI" на "Использовать PHP как модуль Apache" (ПУ — ISP Manager, если что). Ограничений нет, чтоб не спрашивали.
Ну и всё, ошибка исчезла.
Ошибка
Сама ошибка в логах как-то странно выглядела:
C-подобный:
[Fri Jun 28 20:26:18 2013] [error] [client *.*.*.*] PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/%1337yoba1337%/data/www/***.***.tld/lgsl_files/lgsl_config.php:1) in /var/www/%1337yoba1337%/data/www/***.***.tld/admin.php on line 19, referer: http://***.***.tld/admin.php
PHP:
setcookie("lgsl_admin_auth", $auth, (time() + (60 * 60 * 24)), "/");
PHP:
<?php
//------------------------------------------------------------------------------------------------------------+
require "lgsl_files/lgsl_config.php";
if (empty($lgsl_config['admin']['user']) || empty($lgsl_config['admin']['pass']))
{
exit("ADMIN USERNAME OR PASSWORD MISSING FROM CONFIG");
}
elseif ($lgsl_config['admin']['pass'] == "changeme")
{
exit("ADMIN PASSWORD MUST BE CHANGED FROM THE DEFAULT");
}
$auth = md5($_SERVER['REMOTE_ADDR'].md5($lgsl_config['admin']['user'].md5($lgsl_config['admin']['pass'])));
$cookie = isset($_COOKIE['lgsl_admin_auth']) ? $_COOKIE['lgsl_admin_auth'] : "";
if (isset($_POST['lgsl_user']) && isset($_POST['lgsl_pass']) && $lgsl_config['admin']['user'] == $_POST['lgsl_user'] && $lgsl_config['admin']['pass'] == $_POST['lgsl_pass'])
{
setcookie("lgsl_admin_auth", $auth, (time() + (60 * 60 * 24)), "/");
define("LGSL_ADMIN", TRUE);
}
elseif ($cookie == $auth)
{
setcookie("lgsl_admin_auth", $auth, (time() + (60 * 60 * 24)), "/");
define("LGSL_ADMIN", TRUE);
}
// header("Content-Type:text/html; charset=utf-8");
//------------------------------------------------------------------------------------------------------------+
?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>Live Game Server List</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta http-equiv='content-style-type' content='text/css' />
<link rel='stylesheet' href='lgsl_style.css' type='text/css' />
</head>
<body>
<div style='height:30px'><br /></div>
<?php
//------------------------------------------------------------------------------------------------------------+
if (defined("LGSL_ADMIN"))
{
global $output;
$output = "";
require "lgsl_files/lgsl_admin.php";
echo $output;
}
else
{
echo "
<form method='post' action=''>
<table style='margin:auto; text-align:center'>
<tr><td> USERNAME: </td><td> <input type='text' name='lgsl_user' value='' /> </td></tr>
<tr><td> PASSWORD: </td><td> <input type='password' name='lgsl_pass' value='' /> </td></tr>
<tr>
<td colspan='2'>
<br />
<input type='submit' name='lgsl_admin_login' value='Login' />
</td>
</tr>
</div>
</form>";
}
//------------------------------------------------------------------------------------------------------------+
?>
</body>
</html>
Вопрос
Итак, "починить" получилось при помощи простой установки PHP как модуля Apache.
Вопрос: почему же так получается, что хидэр не получается изменить?
Вопрос 2: в чём может быть причина такого сбоя? Ничего не изменялось на сервере, но баг появился, несмотря на это.