2012-06-07 52 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腳本。

相關問題