PHP mb_convert_encodingで500エラーが出る場合の対処法


原因

phpinfo()で状態を確認するとZend Multibyte Supportがdisabledになっていると思う。エラーはこれが原因である。

対処法

Zend Multibyte Supportにmbstringを追加する。

環境

Ubuntu 16.04.7 LTS
Apache2
PHP 7.0

まずphpinfo()を確認し、php.iniの場所を特定する

mbstringをインストールする

$ sudo apt install php-mbstring

php.iniを編集する

$ sudo nano /etc/php/7.0/apache2/php.ini

以下の項目を探して変更する(;のコメントアウトは消す)

php.ini
; 変更した状態
zend.multibyte = On
zend.script_encoding = UTF-8
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

Apache2を再起動し、設定を反映させる

$ sudo service apache2 restart

phpinfo()を確認し、このようになっていたら成功である。