4

ssh経由でmemcacheをインストールしました。

$ pecl install memcache

そしてこれは出力でした:https ://pastee.org/w63sy

そして、この行をに追加しましたetc/php.ini

extension=memcache.so

そして、初期化しようとすると:

/* MEMCACHE */
$memcache = new Memcache();
$memcache->pconnect('localhost',11211);

私は得る:

Fatal error: Class 'Memcache' not found in /home/piscolab/public_html/website.com/includes/sql.php on line 25

私は何が間違っているのですか?

私はこの質問を見つけましたが、問題は彼の共有サーバーに関するものでした。私はVPSの下にいます。

実行中php -i | grep php.ini::

[root@vps ~]# php -i | grep php.ini                                                                                                                                            
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/memcache.so' - /usr/lib/php/modules/memcache.so: cannot open shared object file: No such file o
r directory in Unknown on line 0                                                                                                                                               
Configuration File (php.ini) Path => /etc                                                                                                                                      
Loaded Configuration File => /etc/php.ini                                                                                                                                      
[root@vps ~]#    

memcache.soの検索(出力なし)

[root@vps ~]# find / -type f -name memcache*.so'                                                                                                                              
[root@vps ~]# find / -type f -name memcache*.so                                                                                                                                
[root@vps ~]#
4

2 に答える 2

3

エラーメッセージの出力を考えると、開発ライブラリが欠落しているzlibか、少なくともconfigureによって自動的に検出される通常の場所にないようです。

CentOSを使用しているため、次のコマンドを使用してライブラリをインストールしてみてください。

yum install zlib-devel

これにより、memcacheに必要なzlibライブラリがインストールされます。zlibライブラリをインストールした後、peclインストーラを再実行してみてください。

于 2012-05-27T18:24:40.240 に答える
1

phpinfo()またはphp_configを介してさらに情報を提供すると、おそらく役立つでしょう。具体的には、インストールでmemcache libが表示され、libパスが正しいかどうかを確認できます。

php-config

詳細については、ここで興味深いのは、使用されるphp iniパスであり、-configure-options、suboption --with-config-file-path(/ etc / php5 / apache2 in私の特定のケース)とlibパスは--extension-dirで表示されます

例えば

php-config --extension-dir

php-config --configure-options | grep -o 'with-config-file-path[^ ,.]*' | grep -o '[^=.]*$'

したがって、私の例を使用するには、libパスを次のように設定します。

/ usr / lib / php5 / 20090626+lfsおよび

ls /usr/lib/php5/20090626+lfs/mem*  

私のシステムのコマンドは次のことを明らかにします:

/usr/lib/php5/20090626+lfs/memcached.so

私のphp.iniファイルは/etc/php5/apache2/php.iniにあります

phpinfo()php関数(ファイルに配置して表示するだけ)でも、memcacheがサポートされ、ロードされた「memcachedサポートが有効」であることがわかります(特にmemcacheではなくmemcached拡張機能を使用しました)

Webサーバーがコマンドラインとは異なるphp.iniパス(したがってファイル)を使用するように構成されている可能性があることに注意してください。両方を確認してください。また、extension = memcache.soを正しい場所に配置するようにしてください。多くのディストリビューションでは、extension = memcache.soが/etc/php5/conf.d/memcache.iniに配置されているため、そこに不一致がある可能性がありますか?

于 2012-05-27T11:42:29.520 に答える