如何在PHP中禁用多字节字符串输入转换?

时间:2014-08-26 10:49:54

标签: php .htaccess drupal

我正在尝试在我的本地Drupal 7计算机上安装debian jessie,它告诉我以下内容:

  

PHP中的多字节字符串输入转换是活动的,必须是   禁用。检查php.ini mbstring.http_input设置。请参考   有关更多信息,请参阅PHP mbstring文档。

好的,所以我转到php documentation linked in that message,它为我提供了很多(有帮助的,我确定)与禁用“多字节字符串输入转换”相关的信息。如果它在那里,我没有找到它。

我用Google搜索并提出了a thread on drupal.org,声称:

  

因为Drupal必须禁用mbstring.http_input及其   “亲戚”,关于Drupal安装的很多抱怨被提出来了   在网络空间无处不在。如果你拥有自己的,这不是问题   服务器,有很多解决方法。

provides a link到我在.htaccess文件中添加以下内容的页面:

php_value mbstring.http_input pass
php_value mbstring.http_output pass

所以我查看了我的.htaccess文件,发现了这个:

# PHP 5, Apache 1 and 2.                                                        
<IfModule mod_php5.c>                                                           
  php_flag magic_quotes_gpc                 off                                 
  php_flag magic_quotes_sybase              off                                 
  php_flag register_globals                 off                                 
  php_flag session.auto_start               off                                 
  php_value mbstring.http_input             pass                                
  php_value mbstring.http_output            pass                                
  php_flag mbstring.encoding_translation    off                                 
</IfModule>                    

是的,那么现在呢?

编辑:刚刚将以下行添加到我的php.ini文件中:

  

mbstring.http_input = pass;没有转换。

然后跑service apache2 reload。没效果。

7 个答案:

答案 0 :(得分:6)

在我的php.ini文件中添加了以下内容:

mbstring.http_input = pass ;
mbstring.http_output = pass ;
然后我跑了

sudo service apache2 reload

然后我可以手动安装drupal,但是,如果我尝试使用drush我仍然会收到错误,所以这只是解决方案的一半......

答案 1 :(得分:3)

相反,您可以修改网站的.htaccess文件或settings.php文件。

这样,您的网站与您的drush配置之间不会发生任何冲突。如果您将来更改了服务器的php版本,则不必对新版本的php.ini文件重新进行相同的更改。

通过.htaccess

php_value mbstring.http_input pass
php_value mbstring.http_output pass

或通过settings.php:

ini_set('mbstring.http_input', 'pass');
ini_set('mbstring.http_output', 'pass');

答案 2 :(得分:1)

对我来说,安装php-mbstring模块有助于解决此错误。

答案 3 :(得分:0)

安装drupal演示时出现同样的错误 但我意识到该网站没有.htaccess文件 我把一个复制到网站上 问题消失了

答案 4 :(得分:0)

要在不禁用mbstring的情况下禁用mbstring函数重载,必须使用

mbstring.func_overload = 0

这可以在php.ini文件中设置,如果没有在vhost设置或.htaccess中设置。

如果不起作用,请尝试查找mbstring.ini文件,例如在/etc/php.d/mbstring.ini中。这将在php.ini之后加载,并将覆盖那里设置的任何值。

您可能还需要添加以下内容,但这已在Drupal的htaccess文件中设置,因此如果正确加载此文件,则不应进行任何更改。

php_value mbstring.http_input pass
php_value mbstring.http_output pass

答案 5 :(得分:0)

php.ini 文件中取消注释extension=php_mbstring.dll并重新启动apache

答案 6 :(得分:0)

Drupal 要求您启用 mbstring(多字节字符串),但您的默认 php 设置已禁用此选项。如果您可以更改 php.ini 文件以启用此功能,那么您的问题将得到解决,但有时我们无法访问该文件。

相反,我们可以将 drupal 设置为仅针对此特定站点启用此选项。在您的 sites/default/settings.php 文件(或您可能正在使用的相应副本)上,添加以下内容:

ini_set('mbstring.http_input', 'pass');

ini_set('mbstring.http_output', 'pass');

并重新加载您的 php

这将为这个特定的 Drupal 站点设置 mbstring 选项。如果这仍然失败,则可能是您服务器的 php 根本没有安装 mbstring。在浏览器中运行 phpinfo() 并搜索 mbstring 部分。如果你根本没有找到,那么你需要安装它或请服务器管理员为你做