mb_convert_encoding、mbstringが有効なときに未定義関数

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

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

私はapt-get php5-mbstring、php-mbstring、php-multibyteなどをインストールしてみましたが、うまくいきません。

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

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

./configure --enable-mbstring

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

22
Webサーバーの構成とCLIの構成正確にどこを見ますか?
追加された 著者 deceze,
どのようなmb_ *関数を試してもエラーメッセージは何ですか?
追加された 著者 Emir Akaydın,
あなたの質問を削除し、懲戒バッジを取得する;)
追加された 著者 Emir Akaydın,
@EmirAkaydın - 未定義関数mb_substrまたはmb_convert_encodingを呼び出します。
追加された 著者 Harold,
あなたはあなたのソリューションで私の問題を解決しました。 :)
追加された 著者 Pedro,

3 答え

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

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

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

38
追加された
私はさらに/etc/php/7.0/mods_available/mbstring.iniを編集して削除しました。延長線のために。うんざりすると私のために働いていた:)
追加された 著者 Maarten Kieft,
sudo apt-get php7.0-mbstring をインストールしてから sudo service php7.0-fpm restart を押してください。ありがとう!
追加された 著者 neilsimp1,

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

1
追加された
私はそれがmbstringの拡張とは関係ないと思う。
追加された 著者 Narf,
うん、私はそれがインストールされている。しかし、私は "Zend Multibyte Support"が無効になっていることに気付きました。 PHPを再コンパイルせずにこれを有効にする方法はありますか?
追加された 著者 Harold,

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

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

解決策:

私の場合、私はphp.iniファイルのextension = php_mbstring.dllのコメントを外していますが、問題は解決されています。

コメントを外した後にapacheサーバを再起動することを忘れないでください; extension = php_mbstring.dll

Code taken from this blog: http://chandreshrana.blogspot.in/2016/01/call-to-undefined-function.html

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com