我有我的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文件中。该错误是由一个已经在使用的名称的函数产生的。这就是为什么单独的环境不会产生错误。
答案 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放在其他地方和/或删除代码。
一个原因可能是隐藏的重定向,因为输出已经发生而被阻止。 更有可能共享一些全局变量。