PHP错误[处理此指令时出错]


PHP error [an error occurred while processing this directive]

我有一个php脚本,它基于一些过滤器搜索数据库,并返回结果的数量。我用ajax请求这个文件,以便能够在用户更改一些选择后立即显示搜索返回的结果数量。

这在本地主机上运行得很好,但在生产服务器上则不然。由于我不知道出了什么问题(没有可见的错误),我直接调用了php脚本,看看它是否有任何错误。我得到的是<!-- SHTML Wrapper - 500 Server Error --> [an error occurred while processing this directive] php包括2个文件、数据库连接信息和一些初始化内容。我使用了相对路径,并且两个文件都在正确的位置,具有正确的权限。

我查看了错误日志,因为里面什么都没有。我在谷歌上搜索了一下,但没有具体的结果,而且ATM我不知道如何绕过这个。请告知!

根据我在其他地方看到的信息,这可能是由于脚本上的文件权限不正确造成的。它们可能不允许在服务器上是其他可写的。下面的论坛帖子建议像666777这样的权限会导致这种情况。如果这就是您所拥有的,那么您将需要在生产主机上chmod 644chmod 755您的脚本。

您应该查看apache日志。

步骤1:在PHP中启用错误打印

为了找出错误,请为您的PHP启用错误。

发件人http://www.bradino.com/php/error-reporting/:

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

如果不起作用,请编辑php.ini(请参阅http://php.net/manual/en/errorfunc.configuration.php)和设置:

display_errors=1

如果您不知道php.ini的位置,请使用:

<?php phpinfo(); ?>

并定位"配置文件(php.ini)路径"。有关视觉说明,请参阅:http://www.php-scripts.com/20050909/8/

步骤2:调试Apache/Web服务器日志

如果你在PHP中仍然没有得到任何错误,那么问题就出在web服务器上:

如果您使用的是Apache,请找到access.logerror.log,并查看它们是否包含与此问题相关的消息。

提示:tail -f xxx.log允许您实时跟踪日志中的更改(对于调试非常有用)。

这都是关于文件权限的问题,现在它对我有效…

文件夹权限必须是755其他权限,如(752、753、756和777)会造成限制,并且不起作用。。

文件权限必须是644其他权限,如(642、643、646和647)会造成限制,并且不起作用。。

在我的例子中,这个错误是由以下注释中的标签引起的:

<!--#featured-item -->

我通过删除评论中的标签解决了这个问题

<!--featured-item -->