40986


redisをphpredisから使おうとしたところ

[code]

    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: igbinary_serialize in Unknown on line 0
    
[/code]

が表示されます。

[code]

    <?php
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    
    echo $redis->ping();
    ?>
    
[/code]

のphp(test.php)ですが、実行すると

[code]

    # php test.php
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: igbinary_serialize in Unknown on line 0
    +PONG
    
[/code]

で、一応PONGは返ってくるようです。

環境は、  
PHP 7.0.27 (cli) (built: Jan 2 2018 12:38:03) ( NTS )  
redis-cli 3.2.10

/etc/php.iniには

[code]

    extension_dir = "/usr/lib64/php/modules"
    [redis]
    extension=redis.so
    
[/code]

を追記しています。

モジュールの重複設定かと疑いましたが、

[code]

    # more /etc/php.ini | grep redis
    [redis]
    extension=redis.so
    
[/code]

で重複はしていない模様。

動作はしている(?Warningだけ)模様なので、気にすることはないかもしれませんが、このWarningを消す（解消）するにはどうしたらいいのでしょうか。  
ご存知の方、ご教示お願いします。


CC BY-SA 3.0
2018-01-14T14:51:34.043
40964
2018-08-16T11:00:09.657
8593
question
php redis
PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so'を解消したい


「undefined symbol:
igbinary_serialize」（"igbinary_serialize"が定義されていません）というワーニングなのですから、igbinary_serializeが含まれているライブラリを導入すれば解決すると思われます。

[【メモ】redisをphpで使うまで](https://qiita.com/shinofara/items/9476cee35cfac1b7ee50)の記事で、「Memcached
拡張内でおこなわれるシリアライズ処理の最適化のために igbinary 拡張を導入します」と書かれている辺りが参考になるのではないでしょうか。


CC BY-SA 3.0
2018-01-16T02:34:53.227
40986
2018-01-16T02:34:53.227
217
40964
answer