update-php类导致500内部服务器错误

时间:2016-09-14 12:13:03

标签: php apache nginx

更新-now apache没有给出任何错误。我之前也见过这个。 99%的时间它会抛出错误500.请看这个截图。它没有显示任何错误。

http://imgur.com/a/vYwtA

我不知道如何解决这个问题。它有时会再次开始显示

我创建了一个页面,当我们打开时似乎是正常的页面但是在chrome和mozilla中它会出错。

      Failed to load resource: the server responded with a status of 500 (Internal Server Error) 

http://imgur.com/a/macb7
页面是http://xxxxxx.com/mobile-under-10000

并且我发现如果我将链接的名称更改为http://xxxxxxx.com/mobile并添加类,则不会给出错误。我不能在10000以下的移动设备中添加php类,因为类不允许 - 但我真的需要这个名字就像它的seo友好。   如果我创建这样的页面它可以工作但我必须只选择classname中的一个单词。我有成千上万的链接工作正常,但给出500错误。

<?php
class samplelink {
    function index() {
echo 'write something';
    }
}
?>

任何想要解决的想法都会很棒。我有一个选项强制apache停止抛出500错误。但这是可取的吗?我正在使用带有apache的nginx。

请告知

我的.htaccess代码是

RewriteEngine on
RewriteCond ${LeechProtect:/home/xxxxxx/public_html:%{REMOTE_USER}:%{REMOTE_ADDR}:10} leech
RewriteRule .* http://xxxxxx.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([0-9a-z_/\-]+)/$ index.php\?p=$1 [QSA]
RewriteRule ^([0-9a-z_/\-]+)$ index.php\?p=$1 [QSA]
</IfModule>


RewriteRule ^.* - [F,L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.xxxxx\.com$ [NC]
RewriteRule ^.*$ http://xxxxxx.com%{REQUEST_URI} [R=301,L]

1 个答案:

答案 0 :(得分:0)

如果你的Apache, PHP / MySQL错误日志都是空的,那么.htaccess / httpd.conf导致这个问题非常强烈,所以请检查这些不一致的文件。

  

我发现如果我将链接名称更改为http://way2enjoy.com/mobile并添加类,则不会出现错误

这有力地表明您没有正确转义.htaccess中的字符。

修改

这些行:

RewriteRule ^([0-9a-z_/\-]+)/$ index.php\?p=$1 [QSA]
RewriteRule ^([0-9a-z_/\-]+)$ index.php\?p=$1 [QSA]

可以重写并完全转义为:

RewriteRule ^([0-9a-z_\/\-]+)/?$ index.php\?p=$1 [QSA]

你的htaccess中有一些好奇的行为,但没有任何东西可以作为潜在的致命问题跳出来。

有些观点:

  • 您在htaccess中声明reWriteEngine On三次,这可能会导致错误,因此您可以删除两次。

我已重新整理您的代码:

 <IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule ^([0-9a-z_\/\-]+)/?$ index.php\?p=$1 [QSA]

 RewriteCond ${LeechProtect:/home/xxxxxx/public_html:%{REMOTE_USER}:%{REMOTE_ADDR}:10} leech
 RewriteRule .* http://xxxxxx.com

 RewriteCond %{HTTP_HOST} ^www\.xxxxx\.com$ [NC]
 RewriteRule ^.*$ http://xxxxxx.com%{REQUEST_URI} [R=301,L]
 </IfModule>

 RewriteRule ^.* - [F,L]

最后一行返回一个Forbidden标题结果(403),如果它已经到达,这似乎是非常沉重的,可能是无意义的响应。

我也质疑leechProtect声明,但对此不太了解,无法提供进一步的建议。但是使用上面的代码,然后检查你的网站注释掉(#comment)每一行,然后清除你的浏览器缓存(每次,因为浏览器缓存htaccess规则),看看是否注释掉其中一些请求导致网站没有返回500个错误。

祝你好运。