LoginSignup
3
2

More than 5 years have passed since last update.

Herokuで、DBアクセスするPHPのアプリ動かすと、call_user_func関数がうんたらというエラーが出て困った話

Last updated at Posted at 2015-01-23

最初に

[忙しい人向け] PHPフレームワークSlimを使ったアプリをHerokuで公開してみる

以前投稿した記事↑のようにherokuでslimを使えるようにして、
さらにmysql使えるようにして、DBにアクセスするコード書いたら、
エラーが出てハマったので 他の人向けに解決策をシェアします。

状況

lluminate/Eloquent使って、DBアクセスすると、↓のエラーが出る。

Slim Application Error
The application could not run because of the following error:

Details

Type: ErrorException
Code: 2
Message: call_user_func() expects parameter 1 to be a valid callback, function 'mb_strtolower' not found or invalid function name
File: /app/vendor/illuminate/support/Illuminate/Support/Pluralizer.php
Line: 234
Trace

#0 [internal function]: Slim\Slim::handleErrors(2, 'call_user_func(...', '/app/vendor/ill...', 234, Array)
# 以下略

ぐぐってみた

phpでは、マルチバイト文字を正しく扱うために、php.iniをよしなに設定しないといけないのはわかっていたので、
そのあたりかな、、、とアタリをつけてぐぐってるとよさげな記事を発見。

HerokuでPHPを使うときに気を付けるところ

を参考に、.user.iniにmbstring周りの設定を追記したが、解決せず。。。

もう少しぐぐると、更に発見。

なるほど(^O^)
php.iniの設定ではなくて、マルチバイト文字まわりのライブラリを追加しないといけないのか。

修正コミット

以下の修正をいれて、herokuにpushで幸せになれます。

--- a/composer.json
+++ b/composer.json
@@ -5,7 +5,8 @@
                "slim/extras": "2.0.*",
                "twig/twig": "1.*",
                "Respect/Validation" : "0.5.*",
-               "illuminate/database" : "4.0.*"
+               "illuminate/database" : "4.0.*",
+               "ext-mbstring": "*"
        },
        "autoload": {
                "psr-0": {"":"lib/"}

振り返ると、、、

mb_strtolowerというマルチバイト文字に関係するメソッドがない、というエラーメッセージから
「そういえばphpでマルチバイト文字列を使う時はうんたら、、、」
とかアタリが付けば一瞬で解決するのですが、
僕はそこに達するまで2時間位は、ああでもない、こうでもないとハマりました。

herokuではまだ色々ハマりそうorz

3
2
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
3
2