我试图在我的本地debian jessie
机器上安装Drupal 7
,它告诉我以下内容:
PHP中的多字节字符串输入转换是活动的,并且必须是禁用。检查php.ini的mbstring。http_input设置。请参考查看PHP mbstring文档获取更多信息。
好吧,所以我头在该消息链接的php文档,它为我提供了很多(有用的,我敢肯定)的信息,而不是在所有相关的禁用"多字节字符串输入转换"。如果它在那里,我也没找到。
我用谷歌搜索了一下,在drupal.org上找到了一个帖子,上面写着:
因为Drupal强制禁用了mbstring。Http_input及其"亲戚",很多关于Drupal安装的抱怨被提了出来网络空间无处不在。如果你有自己的,这不是问题
并提供了一个页面的链接,我将以下内容添加到我的.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>
好,现在怎么办?
EDIT:刚刚在我的php.ini文件中添加了以下行:
mbstring。Http_input = pass;没有转换。
并运行service apache2 reload
。没有影响。
将以下内容添加到我的php.ini
文件中:
mbstring.http_input = pass ;
mbstring.http_output = pass ;
然后我跑了
sudo service apache2 reload
然后我可以手动安装drupal,然而,如果我尝试使用drush
我仍然得到错误,所以这真的只是一半的解决方案…
你可以编辑你网站的.htaccess
或settings.php
文件。
这样就不会在你的站点和你的push配置之间产生任何冲突。如果你在将来改变了你的服务器的php版本,你不必重新做同样的改变,以新的php版本的php.ini
文件。
Via .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');
要禁用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
对于我来说,安装php-mbstring
模块帮助解决了这个错误。
安装drupal演示时也会出现同样的错误但我意识到这个网站没有。htaccess文件我复制了一个到网站上问题消失了
取消php.ini文件中extension=php_mbstring.dll
的注释并重新启动apache
Drupal要求您启用mbstring(多字节字符串),但您的默认php设置已禁用此选项。如果你可以修改你的php.ini文件来启用这个功能,那么你的问题就会得到解决,但有时我们无法访问该文件。
相反,我们可以将drupal设置为仅为该特定站点启用此选项。在您的sites/default/settings.php文件(或您可能使用的相应副本)中添加以下内容:
报错("mbstring。http_input"、"通过");
报错("mbstring。http_output"、"通过");
并重新加载php
这将为这个特定的drupal站点设置mbstring选项。如果仍然失败,可能是您服务器的php根本没有安装mbstring。在浏览器中运行phpinfo()并搜索一个mbstring部分。如果您根本找不到它,那么您需要安装它或请服务器管理员为您安装