LoginSignup
9
4

More than 5 years have passed since last update.

heroku環境でmb_xxx関数を使うと、Fatal error: Call to undefined function …のエラーが表示される

Last updated at Posted at 2018-02-21

Fatal error: Call to undefined function …っていうのは、
「深刻なエラーです:未定義の関数を呼び出しています」ってことですね。
このエラーが出る場合によくあるのが、マルチバイト関数が無効化されている状態でマルチバイト関数を呼び出しているケースです。

マルチバイト関数というのは、マルチバイト文字(日本語など)用の関数群で、mb_strpos()、mb_substr()、mb_strlen()などがあります。

特に、herokuのphp環境は、マルチバイト関数がデフォルトで無効の設定になっているので、どっかで調べてきて使おうとしてもエラーが表示されて使えません。

ちなみに、ローカル環境でしたら、php.iniのコメントアウトを消去することでマルチバイト関数を有効にします。

php.ini
;extension=php_mbstring.dll

この行のコメントアウト、";"を取り除けば、マルチバイト関数が有効になります。

しかし、heroku環境ではデプロイ環境のphp.iniをいじることができません。
さて本題です。
herokuでマルチバイト関数を有効にするには、composerに"ext-mbstring"を追加してPushします。

composer.json
"require": {
  "ext-mbstring": "*"
},

こんな感じ。
あと、忘れてはいけないのがcomposer.lockの更新です。
CLI(Windowsならコマンドプロンプト)を開いて、アプリケーションのFile上で、composer updateコマンドを叩きます。

コマンドプロンプト.
...\heroku\アプリ名> composer update

私はこれに気づかずしばらくうんうん言ってましたw

以上の手順を踏めば、マルチバイト関数が使えるようになるはずになり、原因が正しい場合は、エラーも解決されるはずです。

参考:
Heroku上でmbstringなどcomposerを用いて、有効にする方法-雄大スタジアム
「Fatal error: Call to undefined function …」と表示されるとき-PHPプログラミングの教科書 [php1st.com]

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4