2016-07-23 51 views
1
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/memcached.so' - /usr/lib/php/20131226/memcached.so: undefined symbol: php_msgpack_serialize in Unknown on line 0 

今日、以前私のサーバー上のroot @ localhostにメッセージを転送して自分のメールに戻すことができました。PHPスタートアップ:動的ライブラリphp_msgpack_serializeを読み込めません

私は30分間隔で上記のエラーメッセージを受け取りました。もちろん、私はチェックし、30分間隔で実行するcronに添付されたPHPセッションクリーニングスクリプトがあります。

私は周りを探索していましたが、特定の解決策を見つけることができませんでした。

マイセットアップ:nginxの/ 1.10.0

  • memcachedの1.4.25
  • PHP 7.0
  • mysqlの14.14按分5.7.13
  • のUbuntuサーバー版LTS 16.04

上記の問題に最も近いのは次のとおりです。http://community.rtcamp.com/t/php-warning-error-php-msgpack-serialize/6262 buそのスレッドには答えがありません。

答えて

8

まず、どのPHPのiniファイルがロードされているかを調べる必要があります。コマンドラインからphp --iniを実行できます。技術的には、apache/nginxは別のバージョンを実行している可能性があります。その代わりにphpinfo(); exit();テストスクリプトを使用して調べることができます。とにかくコマンドライン版を使用しています。あなたがのような行ができますこれらのファイルのいずれかで

:あなたがすべてでこの拡張機能を必要としない場合

extension="memcache.so" 

、そしてちょうどでそれを付加することで、それをコメントアウトし;:

;extension="memcache.so" 

この拡張モジュールが必要な場合は、このモジュールを再構築する必要があるようです。最も簡単な方法はPECLを使用することです。

pecl install memcache 

インストールを実行している間、いくつかの指示に従う必要があります。完了したら、php -vを実行できるはずであり、同じ警告を出すべきではありません。これがうまくいけばphpのバージョンが見えたら、nginxを再起動する必要があります(ウェブサイトで必要な場合は、コマンドラインがすぐに動くはずです)。 :

sudo service nginx restart 
+0

エラーを引き起こしていたのは、私のサーバーがnginxで使っていたものではないことに気付きました。それらをすべて削除し、今や安心しています。ありがとう – Rexford

+0

ああ、私の解決策は、php5のエラーを修正しているだろう:) – Farkie

1

hereの類似トピックからのヘルプを得ることができると思います。

あなたの拡張機能の1つがmemcacheをロードしていて、そのパスが正しくありません。 php.iniで見つけ、パスを手動で修正する必要があります。

+0

についてのクリーニングとmecachedを呼び出す正確な内線番号を見つけることは、私が見つけるのに苦労してるものです。 – Rexford

+0

このような遅れを返すと申し訳ありません。 Unix/Linux用の/ usr/lib/php/modulesのアドレスで、[リンク](http://stackoverflow.com/a/30371691/6627229)の 'here'でモジュールを変更できます。 – Raham

1

つまり、その拡張子を読み込もうとしているphp設定ファイル(php.ini、またはそれに近いもの)にextension = ...またはzend_extension = ...行があることを意味します:ixed.5.2 .lin

残念ながら、ファイルまたはパスが存在しないか、権限が正しくありません。

PHPで読み込まれた.iniファイルを検索してください(phpinfo()はどれかを示すことができます)。その1人がその拡張子を読み込もうとします。 ファイルへのパスを修正するか、対応する行をコメントアウトしてください。

1

msgpack拡張機能がインストールされ、有効になっていることを確認してください(php -i | grep msgpack)。

UbuntuのPHPはby defaultとコンパイルされているようです。

インストールされて有効になっている場合は、memcached拡張機能をチェックしてください。おそらくあなたは以前のインストールやそれに類似したものからそれを使用しています。

+0

私はmsgpackがインストールされて参照してください。 – Rexford

1

TL; DR:は、私は最終的にその関連cronジョブと一緒に、手動で私のサーバーからをphp7.0未満のすべてのPHPをクリアしなければなりませんでした。

長い話:私の実行中のプロセス(ps -aux | grep 'php')を通って行く

は、私はPHP5が実行されているのままです実現しました。私のサーバ上のすべてがPHP7を使用しているので、残っているプロセスは冗長であり、いわゆるMissing Memcachedファイルを探すスクリプトを使ってphp5でセッションクリーニングジョブを実行するcronジョブがありました。

aptを介してシステムからPHP7未満のすべてのPHPSを除去した後、私はまた、/etc/cron.d/php5およびまたは/etc/cron.d/php/で見つかった彼らのcron関連の仕事と一緒に/usr/lib/php5およびまたは/usr/lib/php/にPHP7未満のすべての既存のフォルダを削除することで行ってきました

PHPセッションからこれ以上の泣き言警告がmemcacheの

関連する問題