26

当我.htaccess用于以下 PHP 设置时,我500 Internal Server Error在访问网站时得到了。

文件中的代码.htaccess

php_flag display_errors off
php_flag log_errors on

该文件的文件权限为.htaccess644

我知道上面的代码是正确的。但是当它显示给我时500 Internal Server Error,我也尝试了不同的代码(很可能是错误的),但没有任何效果。尝试的不同代码是:

php_value display_errors off
php_value log_errors on

php_value display_errors 0
php_value log_errors 1

可能是什么原因500 Internal Server Error

从这个问题的评论中学习后,我发现 PHP 设置在.htaccessFastCGI 上不起作用。因此,要更改 PHP 设置,我需要修改php.ini或者我需要在 php 代码中进行。当我无权修改php.ini文件并且我不想单独修改所有 PHP 文件时,是否有任何替代方法?

4

3 回答 3

7

就像上面的评论所说:您需要将您的 php 模块作为动态共享对象运行以使其工作,如Apache PHP 请求处理文档中所述

DSO注意事项:

libphp 提供 Apache 指令,例如 php_$value 和 php_admin_$value。DSO 是这些指令在 .htaccess 文件或 httpd.conf中有效的唯一选项。当这些指令与并发 DSO 补丁一起编译时,它们应该被命名为 php4_$value 和 php5_$value。

cgi、fcgi、suphp 都行不通。

于 2012-06-10T15:40:50.300 回答
4

正如您所发现的,修改.htaccess仅适用于 apache 模块,它会添加到 apache 可以理解的指令中。这不适用于 cgi 和其他人。

php的方式是修改整个站点的php.ini,或者以每个目录或每个用户为基础进行修改。

对于 php5.5(不确定其他版本),修改.user.ini您希望应用这些设置的目录中的文件。显然,将其设置在站点的根目录会使其适用于整个站点。

转到此处以获取有关 .user.ini 的信息:http: //php.net/manual/en/configuration.file.per-user.php

转到此处查看指令列表以及可以更改的位置:http: //php.net/manual/en/ini.list.php

最后,要检查您的文件(可能在评论中提到),添加一个 phpinfo.php(名称无关紧要)文件,其中包含

<?php phpinfo() ?>

到该目录,以便您可以查看在该目录中运行的 php 脚本的设置。

于 2015-04-02T14:13:49.557 回答
0

我知道这个问题被问到已经有一段时间了,但是如果您的 .htaccess 不包含错误,则可能是引起您头痛的评论。

我最近升级了 WHM,突然在某些页面上出现 500 个内部服务器错误。在查看日志后,我可以看到 .htaccess 文件是问题所在,我解决了问题,因为它们是由评论引起的。

这就是为我解决问题的原因。

以前,我在 .htaccess 文件中有如下所示的指令:

Order Deny,Allow
Deny from 52.87.112.125   # whattheme.com
Deny from 192.163.217.239 # scanwp.net

WHM 升级后我开始收到 500 内部服务器错误(升级中可能包含 apache)。

突然间,apache 不喜欢指令中的注释。我修改了上面代码的 .htaccess 文件,如下所示:

Order Deny,Allow
#  whattheme.com
Deny from 52.87.112.125

#   scanwp.net
Deny from 192.163.217.239

问题解决了。

这可能不是你的问题,但经过一番寻找,这个解决方案对我有用。祝你好运。

于 2018-04-09T04:29:35.003 回答