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 库以及您的库路径是否正确。

php-config

会告诉你更多,这里有趣的是使用的 php ini 路径和 lib 路径 php ini 路径将在你使用时显示 --configure-options, suboption --with-config-file-path (/etc/php5/apache2 in我的具体情况)并且库路径将显示为 --extension-dir

例如

php-config --extension-dir

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

所以要使用我的示例,我的库路径设置为

/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 support enabled”(我专门使用了 memcached 扩展,而不是 memcache)

请注意,您的网络服务器可能配置为使用与命令行不同的 php.ini 路径(因此文件),因此请验证两者。还要确保将 extension=memcache.so 放置在正确的位置,因为许多发行版将其放置在 /etc/php5/conf.d/memcache.ini 中可能存在一些差异?

于 2012-05-27T11:42:29.520 回答