2012-06-07 77 views
19

当我使用.htaccess进行以下PHP设置时,我在访问网站时得到500 Internal Server Error500使用.htaccess进行PHP设置时发生内部服务器错误

代码在.htaccess文件:

php_flag display_errors off 
php_flag log_errors on 

.htaccess文件的文件权限是644

我知道上面的代码是正确的。但是当它向我展示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的原因是什么?

从这个问题的意见中得知,我发现.htaccess上的PHP设置不适用于FastCGI。所以,要更改PHP设置,我需要修改php.ini或者我需要在php代码中执行此操作。有没有其他方法,当我无法修改php.ini文件,我不想单独修改所有的PHP文件?

+1

您有权访问Apache error.log文件吗? –

+0

当您删除.htaccess文件时页面是否加载? – Joey

+2

你实际上是在你的Apache配置中使用'mod_php'吗?如果您通过CGI或FastCGI运行PHP,则无法通过“.htaccess”进行配置。 – lanzz

回答

4

像上面的评论说:你需要在你的PHP模块为Dynamic Shared Object,使其工作,作为Apache PHP Request Hanlding Documentation

DSO考虑描述:

中的libphp提供了Apache指令如PHP_ $值和php_admin_ $值。 DSO是这些指令在.htaccess文件或httpd.conf中有效的唯一选项。当使用并发DSO修补程序编译这些指令时,应该将它们命名为php4_ $ value和php5_ $ value。

cgi,fcgi,suphp它不起作用。

1

正如您发现的那样,修改.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脚本。

相关问题