为什么包括阻止加载php页面?

时间:2012-04-01 14:17:42

标签: php include

我有我的index.php页面,只是我的标题,我想include一个message.php文件。 这个message.php文件执行一些mysql查询,运行几个函数,最后得到一些文本的echo

如果我去mysite.com/message.php - 我可以在浏览器中看到我需要的所有文字。但如果我添加以下行:

<?php include "message.php"; ?>

到我的index.php,页面只加载到include语句,然后产生500内部服务器错误。这怎么可能呢?我完全被困在这里......

编辑:我已经弄明白了,谢谢你用apache日志指出了正确的方向。即使我没有日志访问权限,我也使用语句php_value error_log log.txt对.htaccess进行了编辑。它将错误转储到同一目录中的txt文件中。该错误是由一个已经在使用的名称的函数产生的。这就是为什么单独的环境不会产生错误。

5 个答案:

答案 0 :(得分:4)

将以下内容添加到message.php的顶部:

 ini_set('display_errors',1); 
 error_reporting(E_ALL);

正如大家所说,可能有一个简单的错误(可能是一个错过的引号)抛出错误,但在那个环境中,它会被抛出500错误而不是输出到屏幕。启用上述功能可以揭示问题。

答案 1 :(得分:2)

正如dm03514所指出的那样,你的message.php中可能存在一些破坏你代码的东西。如果该文件中存在致命错误,则会在主文件中导致类似错误。

请求支持error_log - 这确实有助于调试。

答案 2 :(得分:1)

这可能是因为message.php文件中有错误!下一步是找出抛出错误的原因。您可以查看Web服务器错误日志以查看确切的行。要解决此问题,您只需关注message.php文件中的代码。

答案 3 :(得分:0)

好吧,如果您无法访问日志文件,请尝试在可以查看错误的任何其他环境中运行相同的文件。

这是唯一可用的方法 要求陌生人告诉你你的php文件中有什么错误没什么意义,你知道;)

答案 4 :(得分:0)

尝试复制index.php,比如copy.php,插入一个test.ph include,只显示一些“KILLROY WAS HERE”。

如果确实有效,请转到<?php echo "..."; ?>

如果不起作用,请将include放在其他地方和/或删除代码。

一个原因可能是隐藏的重定向,因为输出已经发生而被阻止。 更有可能共享一些全局变量。