33

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

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

apt-get install php5-mbstring、php-mbstring、php-multibyte などを試しましたが、どれも機能していないようです。

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

編集:PHPを再コンパイルして修正しました(これは私の最後の手段であり、最初は避けたかったのです)

./configure --enable-mbstring

奇妙なことに、phpinfo() はすでに有効になっていることを示していました。なぜ以前はうまくいかなかったのかわかりません:/

4

4 に答える 4

50

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

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

その後、必ずApacheサーバーを再起動してください。RH フレーバーで service httpd restart を使用します。

于 2013-11-01T13:46:08.113 に答える
5

インストールの場合、php5.6 は neilsimp1 のソリューションに似ています。

実行sudo apt-get install php7.0-mbstringしてからsudo service php7.0-fpm再起動すると、うまくいきました。

sudo apt-get install php5.6-mbstring

そしてApacheサービスを再起動します

sudo service apache2 restart.
于 2018-08-27T20:17:27.730 に答える
2

この種のエラーが発生することがあります: Fatal error: Call to undefined function mb_convert_encoding() in /public_html/this/this.php at line 188. 通常、この種のエラーは PHP サイトや PHP フレームワークでも発生します。

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

解決 :

私の場合、php.ini ファイルで ;extension=php_mbstring.dll のコメントを外すだけで、問題は解決しました。

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

このブログからのコード: http://chandreshrana.blogspot.in/2016/01/call-to-undefined-function.html

于 2016-07-02T06:06:30.937 に答える