我通过ssh安装了memcache,其中包含:
$ pecl install memcache
并将此行添加到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 ~]#
答案 0 :(得分:3)
鉴于错误消息的输出,您似乎缺少zlib
开发库,或者至少它们不在通常可以通过configure找到它的位置。
由于您使用的是CentOS,请尝试使用以下命令安装库:
yum install zlib-devel
这将安装memcache所需的zlib库。安装zlib库后,请尝试重新运行pecl安装程序。
答案 1 :(得分:1)
如果您通过phpinfo()或php_config提供更多信息,它可能会有所帮助,更具体地说,您的安装是否看到了memcache库并且您的lib路径是否正确。
php-config
会告诉你更多,这里有趣的是使用的php ini路径和lib路径 使用--configure-options,suboption --with-config-file-path(/ etc / php5 / apache2,在我的特定情况下)时将显示php ini路径 并且将使用--extension-dir
显示lib路径e.g。
php-config --extension-dir
php-config --configure-options | grep -o 'with-config-file-path[^ ,.]*' | grep -o '[^=.]*$'
因此,要使用我的示例,我的lib路径设置为
/ usr / lib / php5 / 20090626 + lfs and a
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支持启用”(我专门使用memcached扩展,而不是memcache)
请注意,您的网络服务器可能配置为使用与命令行不同的php.ini路径(以及文件),因此请同时验证两者。还要确保将extension = memcache.so放在正确的位置,因为许多发行版将它放在/etc/php5/conf.d/memcache.ini中可能会有一些差异吗?