Php 两段(几乎)相同的代码产生不同的结果
我一直在做一个小MVC项目来帮助我自学,我遇到了一个完全困扰我的问题。我在这个MVC ish系统中创建了一个博客部分,并从ACL中获取了用户权限,没有任何问题。 我开始创建一个成员部分,当我添加任何权限检查时,我从Chrome中得到以下错误: 没有收到任何数据 无法加载网页,因为服务器未发送任何数据。 以下是一些建议: 稍后重新加载此网页。 错误324(net::ERR_EMPTY_RESPONSE):服务器关闭了连接,但未发送任何数据 我觉得这很奇怪,所以我仔细检查了我的错误日志,结果什么都没有显示。所以我决定将工作日志代码复制并粘贴到成员文件中,然后重新加载,我得到了完全相同的错误,现在这两个文件之间的唯一区别是文件名和类名。 以下是博客代码:Php 两段(几乎)相同的代码产生不同的结果,php,model-view-controller,Php,Model View Controller,我一直在做一个小MVC项目来帮助我自学,我遇到了一个完全困扰我的问题。我在这个MVC ish系统中创建了一个博客部分,并从ACL中获取了用户权限,没有任何问题。 我开始创建一个成员部分,当我添加任何权限检查时,我从Chrome中得到以下错误: 没有收到任何数据 无法加载网页,因为服务器未发送任何数据。 以下是一些建议: 稍后重新加载此网页。 错误324(net::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);
}
任何帮助或建议将不胜感激,因为我被难倒了
PS是的,我有错误报告设置,涵盖所有内容,不,它不记录任何内容
编辑:因为所有文件都通过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'));
更新:我修改了loadCore,以便如果调用的是acl,它将使用try…catch(),但这没有帮助,因为它不会在相同的chrome和IE页面上显示错误
更新2:我已经与我的主机进行了交谈,似乎每次出现此错误时,apache都会记录以下内容(不确定为什么我无法在日志副本中看到它!)
[Wed Feb 22 08:07:11 2012][error][client 93.97.245.13]提前结束
脚本头的名称:index.php
我很想看看loadCore函数里面有什么
你在哪里用过吗?这可能有助于阐明这个问题。我想了解一下loadCore函数的内部内容
你在哪里用过吗?这可能有助于阐明这个问题。您在不同的浏览器中测试过这个页面吗?谷歌搜索了你的错误,这表明它可能是特定于chrome的
您关于注释loadCore('acl')的声明很有趣,因此显然我将从这里开始。您确定它正在通过加载程序获取system/library/acl.php页面吗?Aka,它正在触发loadCore()中出口下方的第2行?var_转储返回imo以确保您获得了对象。您是否在不同的浏览器中测试过此页面?谷歌搜索了你的错误,这表明它可能是特定于chrome的
您关于注释loadCore('acl')的声明很有趣,因此显然我将从这里开始。您确定它正在通过加载程序获取system/library/acl.php页面吗?Aka,它正在触发loadCore()中出口下方的第2行?var_转储返回imo以确保您获得了对象。您已经注释掉了 /$array=$this->model->list_posts()强> 所以现在数组为空,您正试图使用 'list'=>$array[0], “post\u title”=>$array[0]['entry\u title', 这肯定会产生错误 编辑:- 我看你有
'body'=>“对不起,您没有访问此文件的权限,”);}代码>
这是在第二个else中,这是一个语法错误。并生成输出。如果已启用,则压缩CI中的输出,这将导致此错误 您已经注释掉了
/$array=$this->model->list_posts()强>
所以现在数组为空,您正试图使用
'list'=>$array[0],
“post\u title”=>$array[0]['entry\u title',
这肯定会产生错误
编辑:-
我看你有
'body'=>“对不起,您没有访问此文件的权限,”);}代码>
这是在第二个else中,这是一个语法错误。并生成输出。如果已启用,则压缩CI中的输出,这将导致此错误 首先。当服务器在发送任何数据之前断开连接时,会产生此错误。
一些建议
- 您的代码已损坏,让应用程序崩溃
- 您的错误日志应该通过通知来增强
- 编写测试以检查每个部件
- 你应该启用并使用调试器(zend_调试器,xdebug)
- 发布更多的连接信息(例如wget-O----debug'url')
这个问题有一个特殊的chrome问题
首先。当服务器在发送任何数据之前断开连接时,会产生此错误。
一些建议
- 您的代码已损坏,让应用程序崩溃
- 您的错误日志应该通过通知来增强
- 编写测试以检查每个部件
- 你应该启用并使用调试器(zend_调试器,xdebug)
- 发布更多的连接信息(例如wget-O----debug'url')
这个问题有一个特殊的chrome问题
我建议检查标签前是否有空行
您使用的文件名是什么?您是否必须遵循任何约定才能适合您可能使用的框架?我建议检查标记前是否有任何空行
您使用的文件名是什么?是否有任何约定必须遵循才能适合您可能使用的框架?“脚本头过早结束”是内部服务器错误。这通常发生在脚本中断并且在发送错误消息之前不发送任何HTTP头时。这可能有几个原因
- 一种可能是输出缓冲。默认情况下,可能是正在使用的服务器缓冲区输出。我建议使用
output\u buffering=off
onphp.ini
关闭output\u buffering
- 制造
protected function load_user()
{
if(!$this->loader->loaded['acl'])
{
$this->loader->loadCore('acl');
}
return $this->loader->loaded['acl'];
}
<?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'));
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;
}
}
}
}