2011-11-25 10 views
21

Apache2/MySQLでPHP 5.3.8を実行しているサーバー(Ubuntu 11.10 x64)があります。私は現在、特定の文字エンコーディングを行う必要があるプロジェクトに取り組んでいますが、マルチバイト(mb_ *関数)のどれも動作していないことがわかりました。mb_convert_encoding、mbstringが有効になっている間に未定義の関数

しかし、私がphpinfo()を見ると、マルチバイトのサポートが有効になっています。

私はapt-get php5-mbstring、php-mbstring、php-multibyteなどをインストールしようとしましたが、動作しないようです。

誰も私にこの方向性を向けることができますか?前もって感謝します!

編集:PHPを再コンパイルすることで、それを修正(これは私が最初に避けたかった私の最後の手段であった)

に./configure --enable-mbstringの

これは奇妙な、のphpinfo()が既にそれが有効になっていることを示しました。なぜそれがうまくいかなかったのかわからない:/

+1

何ですか? –

+1

Webサーバーの構成とCLIの構成はどちらですか?正確にどこを見ますか? – deceze

+0

@EmirAkaydın - 未定義関数mb_substrまたはmb_convert_encodingを呼び出します。 – Harold

答えて

34

多くの新しいLinuxサーバには、デフォルトでPHPマルチバイトモジュールがインストールされていません。簡単な解決策は、しばしばphp-mbstringをインストールすることです。

Red Hatフレーバ(CentOS、Fedoraなど)では、yum install php-mbstringを使用できます。

その後、Apacheサーバーを再起動してください。 RHのフレーバでサービスhttpd restartを使用してください。

+9

'sudo apt-get install php7.0-mbstring'そして' sudo service php7.0-fpm restart'が私のためにトリックをしました。ありがとう! – neilsimp1

+0

私はさらに/etc/php/7.0/mods_available/mbstring.iniを編集して削除しました。延長線のために。うんざりすると私のために働いていた:) –

1

libmbflがインストールされていますか?もしそうなら、mbstringの下に "Multibyte string engine"として出力されたphpinfo()に表示されるはずです。

+0

うん、私はそれがインストールされている。しかし、私は "Zend Multibyte Support"が無効になっていることに気付きました。 PHPを再コンパイルせずにこれを有効にする方法はありますか? – Harold

+0

mbstringの拡張機能とは関係ないと思います。 – Narf

0

致命的なエラー:/public_html/this/this.phpの188行目で未定義の関数mb_convert_encoding()を呼び出します。通常、この種のエラーはPHPサイトとPHPフレームワークでも発生します。

PHP mbstringがサーバーにインストールされていないようです。

ソリューション:私はちょうどコメントを解除してい私の場合は

; php.iniファイルや問題で= php_mbstring.dll拡張子が解決されました。

のコメントを解除した後、Apacheサーバを再起動することを忘れないでください。このブログから取られた拡張子= php_mbstring.dll

コード:あなたはMB_ *関数のいずれかをしようとすると、エラーメッセージhttp://chandreshrana.blogspot.in/2016/01/call-to-undefined-function.html