Я работал над небольшим проектом MVC, чтобы помочь в самообучении, и я столкнулся с проблемой, которая полностью сбила меня с толку. Я создал раздел блога в этой системе MVC-ish и вытащил пользовательские разрешения из ACL без каких-либо проблем. я перешел на создание раздела члена, и как только я добавил разрешение проверку я получаю следующее сообщение об ошибке от Chrome:Два (почти) идентичных фрагмента кода производят отдельные результаты
Нет данных получены Невозможно загрузить веб-страницу, так как сервер не посылал данных. Вот несколько советов: Перезагрузить страницу позже. Ошибка 324 (сеть :: ERR_EMPTY_RESPONSE): сервер закрыл соединение без отправки каких-либо данных.
Я думал, что это было странно, поэтому я дважды проверил журналы ошибок и ничего не обнаружил. Поэтому я решил скопировать и вставить рабочий код блога в файл-член, перезагрузить, и я получил ТОЧНУЮ ту же ошибку, единственная разница между двумя файлами прямо сейчас - это имя файла и имя класса. Вот Блог код:
<?php
class blog extends frontController {
public $model;
public $user;
public function __construct()
{
parent::__construct();
$this->model = $this->autoload_model();
$this->user = $this->load_user();
$this->user->getUserRoles();
}
public function index()
{
//Will only list the latest post ;)
if(!$this->user->hasPermission('blog_access'))
{
$array = $this->model->list_posts();
if(empty($array))
{
$this->variables(array(
'site_title' => 'View Blog Posts',
'post_title' => 'Sorry but there are no posts to display'
));
} else {
$this->variables(array(
'site_title' => 'View Blog Posts',
'list' => $array[0],
'post_title' => $array[0]['entry_title'],
'link' => str_replace(' ', '_',$array[0]['entry_title']),
));
}
} else {
$this->variables(array(
'site_title' => 'Error :: Design Develop Realize',
'body' => 'Sorry, but you do not have permission to access this',
));
}
$this->parse('blog/list', $this->toParse);
}
Это файл член:
<?php
class member extends frontController {
public $model;
public $user;
public function __construct()
{
parent::__construct();
$this->model = $this->autoload_model();
$this->user = $this->load_user();
$this->user->getUserRoles();
}
public function index()
{
//Will only list the latest post ;)
if(!$this->user->hasPermission('blog_access'))
{
//$array = $this->model->list_posts();
if(empty($array))
{
$this->variables(array(
'site_title' => 'Design Develop Realize :: View Blog Posts',
'post_title' => 'Sorry but there are no posts to display'
));
} else {
$this->variables(array(
'site_title' => 'Design Develop Realize :: View Blog Posts',
'list' => $array[0],
'post_title' => $array[0]['entry_title'],
'link' => str_replace(' ', '_',$array[0]['entry_title']),
));
}
} else {
$this->variables(array(
'site_title' => 'Error :: Design Develop Realize',
'body' => 'Sorry, but you do not have permission to access this',
));
}
$this->parse('blog/list', $this->toParse);
}
В классе члена, если я закомментировать $this->user = $this->load_user();
то ошибка исчезает !!! Просто для справки здесь является то, что функция:
protected function load_user()
{
if(!$this->loader->loaded['acl'])
{
$this->loader->loadCore('acl');
}
return $this->loader->loaded['acl'];
}
Любая помощь или предложения будут оценены как я в тупик!
PS да У меня есть отчет об ошибках, чтобы охватить все, и нет, он ничего не регистрирует!
EDIT: Поскольку все файлы проходят через index.php я поместил ошибку репортаже:
<?php
error_reporting(E_ALL);
ini_set('date.timezone', "Europe/London");
require_once('system/library/loader.php');
$loader = new loader();
$loader->loadCore(array('frontController', 'routing'));
EDIT 2: loadCore() ниже
public function loadCore($toLoad, $params = false)
{
//important task first, check if it is more then 1 or not
if(is_array($toLoad))
{
//more then one so lets go to the task!
foreach($toLoad as $file)
{
if(file_exists('system/library/' . $file . '.php'))
{
require_once('system/library/' . $file . '.php');
if($params)
{
$this->loaded[$file] = new $file($params);
} else {
$this->loaded[$file] = new $file;
}
} else {
trigger_error("Core File $file does not exist");
}
}
} else {
//Phew, less work, it is only one!
if(file_exists('system/library/' . $toLoad . '.php'))
{
require_once('system/library/' . $toLoad . '.php');
if($params)
{
echo(__LINE__); exit;
$this->loaded[$toLoad] = new $toLoad($params);
} else {
$this->loaded[$toLoad] = new $toLoad;
}
}
}
}
Update: Я модифицировал loadCore так, чтобы, если бы он был вызван acl, он использовал бы try ... catch(), и это не помогло, так как не будет отображаться ошибка ju й тот же хром и IE страницы
Update 2: Я говорил с моим хозяином, и это, кажется, что каждый раз возникает эта ошибка, апач входит следующее (не знаю, почему я не могу видеть его в моей копии журналов!)
[ср 22 февраля 2012 8:07:11] [ошибка] [клиент 93.97.245.13] Неожиданный конец заголовков сценария: index.php
Можете ли вы показать, как вы установили отчет об ошибках и где? На каких журналах вы смотрите? Потому что вещи вроде этого должны абсолютно оставить след где-то –
Я обновил вопрос, чтобы показать Pekka –
Можете ли вы попробовать поставить строку error_reporting прямо перед нарушившимся вызовом, чтобы исключить, что он настроен на «тихий» в другом месте? И можете ли вы указать, какие журналы вы смотрите? –