はい、お疲れ様です。
僕こと鬼チャラいプログラマーしんばしは困ったらすぐにGoogle先生に聞いてしまうのですが、マスターから「ルーク、ソースを使うのじゃ!」と言われてソースを眺めてみました。
無事MessagePackをmake installし、めでたしめでたし。さてテストしてみようとphpを走らせたところ
Warning: PHP Startup: Unable to load dynamic library 'modules/msgpack.so' - modules/msgpack.so: undefined symbol: RETURN_NUL in Unknown on line 0
こんなエラーが出ました。
なんぞ。
最後までひっしにGoogle先生で抵抗しましたが、出てきた記事は自分と同じ症状で困っているというコメントのみ。
\(^o^)/
でもまぁ今回は諦めるわけにはいかないのでマスターのお告げに従いソースを見てみました。
結論:RETURN_NUL じゃねぇ RETURN_NULLだ!
ということです。
とりあえずソースをみて/RETURN_NULと打ってRETURN_NULを探す。すると
RETURN_NUL()
RETURN_NULL()
という記述があることが分かります。
具体的には
447 PHP_MSGPACK_API void php_msgpack_unpack_limit(zval *return_value, const char *buf, int len, zend_bool assoc TSRMLS_DC) /* {{{ */ 448 { 449 if (len<=0) { 450 RETURN_NUL(); 451 }
509 if (!parameter_len) { 510 RETURN_NULL(); 511 }
528 if (!parameter_len) { 529 RETURN_NULL(); 530 }
542 if (len<=0) { 543 RETURN_NUL(); 544 }
604 if (!data_len) { 605 RETURN_NULL(); 606 }
624 if (!data_len) { 625 RETURN_NULL(); 626 }
の6ヶ所。
そうですね、NULじゃないですよね。NULLですよね。
このうちの450行目と543行目のNULをNULLにすればOK。
vimなら
:%s/RETURN_NUL()/RETURN_NULL()/g
とでもすればいいんじゃないでしょうか。
再びmake, make install。
無事動きました。
めでたしめでたし。
早いところPECLとかで入れられるようになるといいなぁ。