我发现了几个非常相似的问题。然而,每个问题都指向使用了错误的php.ini文件,或者根本没有安装memcache,或者有memcached而没有memcache设置,等等,所以我认为这个问题是不同的,尽管对该错误的搜索引发了几次讨论。
无论如何,当我尝试实例化一个新的Memcache对象时,我得到:
致命错误:在第360行的/websites/../app/app_controller.php er.php中找不到类'Memcache‘
因为从命令行调试东西有时会给你带来不好的信息,所以我只是在页面中添加了我的调试:
<pre>
<?= system('php -i | grep "php.ini"') ?>
<?= system('php -i | grep memcache') ?>
<?= system('php -i | grep extension_dir') ?>
</pre>这给了我:
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /private/etc/php.ini
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.default_timeout_ms => 1000 => 1000
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => standard => standard
memcache.max_failover_attempts => 20 => 20
Registered save handlers => files user sqlite memcache
Registered save handlers => files user sqlite memcache
extension_dir => /usr/local/php53/modules => /usr/local/php53/modulesmemcache报告告诉我,我已经正确设置了php.ini文件,并将memcache.so文件放在了正确的位置,但为了清楚起见,下面是这些信息:
extension_dir = "/usr/local/php53/modules"
extension=memcache.somemcache.so就在那里:
younker % la /usr/local/php53/modules/memcache.so
-rwxr-xr-x 1 younker staff 60196 Feb 14 10:56 /usr/local/php53/modules/memcache.so所以,我显然遗漏了一些东西,我只是不知道为什么php找不到类Memcache。
发布于 2011-02-20 03:55:16
这场讨论已经沉默不语,所以我想发布我的修复(我刚刚完成)。
基本上,我停止使用我的操作系统(mac osX 10.5.3)附带的apache/php组合,并重新安装。我首先尝试了homebrew,但在尝试安装wget时遇到了一堆错误,然后在尝试安装justin hileman's php formula时又遇到了一些错误。因此,在卸载macports作为自制软件故障排除过程的一部分后,我重新安装了macports并安装了所有软件。然而,macports很糟糕,没有正确安装支持mysql的php,所以我只是抓取了我想要的php binary,并使用以下配置选项以旧的方式安装:
--prefix=/opt/local --with-mysql=/usr/local/mysql --enable-memcache --mandir=/opt/local/share/man --infodir=/opt/local/share/info --with-config-file-path=/opt/local/etc/php5 --with-config-file-scan-dir=/opt/local/var/db/php5 --disable-all --enable-bcmath --enable-ctype --enable-dom --enable-fileinfo --enable-filter --enable-hash --enable-json --enable-libxml --enable-pdo --enable-phar --enable-session --enable-simplexml --enable-tokenizer --enable-xml --enable-xmlreader --enable-xmlwriter --with-bz2=/opt/local --with-mhash=/opt/local --with-pcre-regex=/opt/local --with-readline=/opt/local --with-libxml-dir=/opt/local --with-zlib=/opt/local --disable-cgi --with-apxs2=/opt/local/apache2/bin/apxs --with-pear=/opt/local/lib/php --with-openssl=/opt/local在这一点上,一切都是小狗和彩虹。
发布于 2011-02-15 17:40:22
好的,那么memcache模块已经加载了,但是include路径呢?该错误告诉您无法找到memcache类,因此请查看get_include_path和set_include_path函数以及memcache类文件的实际位置。从外观上看,我想您的应用程序重新设置了包含路径,但不会保留php.ini中的默认包含路径,而应该保留旧路径。像这样的smth:
<?php
$path = '/some/app/include/path';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
?>发布于 2011-02-15 17:32:27
使用:
sudo a2enmod memcache或者类似的。
https://stackoverflow.com/questions/4997639
复制相似问题