我刚刚移动了网络主机,我的.htaccess中出现了关于php_flag和php_value未定义的错误。它在其他主机上运行良好。
这就是我的.htaccess的样子:
php_value display_errors On
php_flag magic_quotes 1
php_flag magic_quotes_gpc 1
php_value mbstring.http_input auto
php_value date.timezone America/Los_Angeles
整件事:
php_value display_errors On
php_flag magic_quotes 1
php_flag magic_quotes_gpc 1
php_value mbstring.http_input auto
php_value date.timezone America/Los_Angeles
# Do not remove this line, otherwise mod_rewrite rules will stop working
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1\.php
DirectorySlash Off
# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
Options -Indexes
这里出了什么问题以及如何解决?
答案 0 :(得分:1)
您的新主机在CGI / FCGI /其他SAPI模式下运行PHP。仅当PHP作为apache模块运行时,才支持在.htaccess
文件中设置PHP选项。因此,新服务器会引发内部错误。
对于较旧的PHP版本,您可以使用htscanner PECL包,对于PHP 5.3,您可以使用user.ini.files(这绝对是首选)。
对于以前的htscanner解决方案,将.htaccess
文件中的php相关行包装在
<IfModule mod_php5.c>
php_value ...
php_flag ...
</IfModule>
对于后一个新的.user.ini
解决方案,在项目的根目录中创建一个文件.user.ini
,插入
display_errors=On
magic_quotes=On
magic_quotes_gpc=On
mbstring.http_input="auto"
date.timezone="America/Los_Angeles"
并从.htaccess
文件中删除相应的行。
display_error
设置为on
并不是一个好主意。同时,magic_quotes
是一个不赞成使用的功能。如果可以,您应该重写脚本。如果您使用的是更新版本的PHP(如5.4),则此功能甚至不再可用。