2009-07-23 14 views
15

Memcacheがインストールされていて、PHPアプリケーションがApache(v2.2)で動作していますが、コマンドラインで.phpファイルを実行しようとすると、コマンドラインで「Memcache」が見つかりませんPHPスクリプト

Fatal error: Class 'Memcache' not found in /usr/local/Matters/app/matters-common/connection.php on line 94 

ライン94は以下のとおりです。

$memcache = new Memcache; 

その他の情報:

のCentOS 5.2
PH P 5.2.5(CLI)(組み込み:2008年2月20日21時13分12秒)
のZend Engineのバージョン2.2.0、著作権(C)1998から2007のZend Technologies社
のApache v2.2.8

答えて

25

おそらく、apacheとコマンドライン(cli)用に別々のphp.iniファイルが設定されています。

もしそうなら、あなたは、CLI php.iniファイルに以下を追加する必要があります:Ubuntuで

extension=memcache.so 

それはその後、働いている場合、それは/etc/php5/cli/php.ini

にありますコマンドラインでphp -mを実行すると、memcacheがモジュールのリストに表示されます。

また、同じ内容のファイル/etc/php5/cond.d/memcache.iniを作成することもできます。私が使用したシンプルさを期すため

+0

は、PHPの-mを実行し、 – rjstelling

+0

がのために働いて、他のモジュールです表示されないです:あなたは、あなたが表示されますリストの最上部付近にどこかが使用されているphp.iniの設定の長いリストを取得しますクリ? cli php.iniファイルに "extension_dir"が設定されていますか? memcache.soがデフォルトのディレクトリ(私の場合は /usr/lib/php5/20060613 /)にある場合、extension_dirはコメントアウトのままにしておいてもかまいません。 –

5

それが可能ですCLIモード用の別個のphp.iniファイルがあります。このファイルにはmemcache拡張が含まれていない可能性があります。

0

php -c /etc/php.ini ./cli-script.php 
+0

デベロッパー環境では、私はcli php.iniをapacheのシンボリックリンクに置き換える傾向があるので、1つのファイルしか持たない(デフォルトでは、Ubuntuの唯一の違いはメモリ制限がコマンドラインで無制限に設定されているということです)。 –

2

私はこの種のエラーを持っていたし、私もPHP -iをしました| grep memcacheとmemcacheが有効になっていると言いますが、問題を解決した私の解決策はphp.iniを編集したときでした。extension_dir = "./"行をextensionsディレクトリのフルパスに変更しました。 extension_dir = "/ usr/local/lib" - phpの拡張ディレクトリがどこにあるのか確認し、memcache.soがそこにあることを確認する必要があります..

私は単純にhttpdを再起動し、問題はなくなりました。

あなたはここで詳細な手順を確認することができます。

http://joemarie-aliling.com/223/php-programming/php-memcache-not-found-problem/

0

あなたは、コマンドラインは、型のphp -iを使用しているphp.iniのか分からない場合。

Configuration File (php.ini) Path => /Applications/MAMP/bin/php/php5.3.6/conf 
Loaded Configuration File => /Applications/MAMP/bin/php/php5.3.6/conf/php.ini 
Scan this dir for additional .ini files => (none) 
Additional .ini files parsed => (none) 
関連する問題