PHP memcached致命的なエラー:クラス 'Memcache'が見つかりません


81

phpでmemcachedを使用するための例をphp.netから貼り付けましたが、次のようになります。

Fatal error: Class 'Memcache' not found

私はこれをphp.iniに持っています:

[memcache]
memcache.hash_strategy = "consistent"
memcache.max_failover_attemps = 100
memcache.allow_failover = 1

それぞれphp-iとphp-mからの情報は次のとおりです。

php -i | grep -i memcache
memcached
memcached support =>有効な
libmemcachedバージョン=> 0.37
登録済みの保存ハンドラー=>ファイルusersqlite memcached

php -m | grep -i memcache
memcached

したがって、phpはmemcachedをモジュールとしてロードしたようであり、php infoは、それがロードされ、v.37を使用していることを示しています。私はまだapacheを介して試していません、私は今cliを介してこれを使用しているだけです。何かご意見は?



私はそれを調べたところ、すでにphp.iniに拡張子がリストされており、extension_dirが正しい場所を指していることを確認しました。
jpfuentes2 2010

'MEMCACHE'をインストールする簡単なコマンドについては、以下の私の回答を参照してください。
フィルヒーリー

1
sudo apt-get install php-memcache私のために働いたものです。packages.ubuntu.com/…は利用可能なパッケージを表示します。
ライアン

回答:


131

PHPのmemcachedには、「memcache」と「memcached」の2つの拡張機能があります。

一方(「memcache」)を使用しようとしているようですが、もう一方はインストールされています(「memcached」)。


4
これはちょっとばかげていますが、残念ながらPHPでは頻繁に発生するパターンです。古い拡張機能を更新して新しいものをより適切に処理するのではなく、逆方向に圧縮するのではなく、単に新しい拡張機能を作成しました。mysqlおよびmysqliも参照してください。
チャールズ

これは正しい問題のようです。しかし、私が見つけたすべての指示はmemcachedをインストールするように言っているようですが、memcacheを参照してください。これは少し紛らわしいです。
パトリック

7
わかりました、簡単な修正を見つけました(他のすべてが機能していないようだったので)。次のコマンドを実行するだけです。sudoaptitudeinstallmemcached php5-memcached
Patrick

これらのパッケージ名は、特定のDebian派生物でのみ機能することに注意してください。パッケージ名は他の環境では異なります。
チャールズ

1
両方をロードしても、パフォーマンスに実際の影響はないはずです。
チャールズ

22

受け入れられた回答がコメントに何を言っているかにかかわらず、「Memcache」をインストールする正しい方法は次のとおりです。

sudo apt-get install php5-memcache

MemcacheとMemcachedは、関連するソフトウェアの2つの異なる部分であり、しばしば混同されます。

編集 これは古い投稿なので、php5をphpのバージョン番号に置き換える必要があることを言及する価値があると思いました。


数年後、この答えは時代遅れだと思います。sudo apt-get install php-memcache私のために働いたものです。packages.ubuntu.com/…は利用可能なパッケージを表示します。
ライアン

1
@Ryan確かに、これはPHP5を使用していない場合にのみ適用されます。多くのサーバーがまだPHP5を使用しているため、当時と同じように有効です。さらに、質問にはubuntu-9.10のタグが付けられているため、そのバージョンに直接関連しているため、これにより私の回答がさらに検証されます。
フィルヒーリー2017

「Memcached&Memcached」??
ブライアンリーシュマン2018

ウィンドウの解決策はありますか?
IrfanAnwar

1

私はこの投稿で解決策を見つけました:https//stackoverflow.com/questions/11883378/class-memcache-not-found-php# =

PHP5.4.4で動作するdllファイルが見つかりました

それらがどれほど安定しているかはわかりませんが、確実に機能します。クレジットはこのリンクに移動します。

http://x32.elijst.nl/php_memcache-5.4-nts-vc9-x86.zip

http://x32.elijst.nl/php_memcache-5.4-vc9-x86.zip

これは2.2.5.0バージョンであり、コンパイル後に気づきました(PHP 5.4.4の場合)。

2.2.6ではありませんが動作することに注意してください。また、自分のFTPでそれらをミラーリングしました。ミラーリンク:

http://mustafabugra.com/resim/php_memcache-5.4-vc9-x86.zip http://mustafabugra.com/resim/php_memcache-5.4-nts-vc9-x86.zip


0

右はphp_memcache.dllです。私の場合、vc6コンパイラの代わりにvc9でコンパイルされたlibを使用していました。パッチエラーログで、次のようなものが得られました。

PHPの起動:sqlanywhere:モジュールを初期化できませんビルドID = API20090626、TS、VC9でコンパイルされたモジュールビルドID = API20090626、TS、VC6でコンパイルされたPHPこれらのオプションは一致する必要があります

同じログがあるかどうかを確認し、異なるコンパイラでコンパイルされた異なるdllをダウンロードしてみてください。


0

OSXユーザーの場合:

次のコマンドを実行して、Memcachedをインストールします。

brew install memcached

-8

wp-config /に移動し、object-cache.phpとadvanced-cache.phpを削除しましたが、問題なく動作しました。


2
WordPressのインストールでオブジェクトのキャッシュを実行できないようにするだけでした。OPからの質問は言うまでもなく、実際には何も修正するものではありません。
フィルヒーリー2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.