我发现了几个非常相似的问题。但是,每个人都指向使用错误的php.ini文件或者根本没有安装memcache,或者有memcached而不是memcache设置等,所以我相信这个问题是截然不同的,尽管搜索该错误会引发一些讨论。
无论如何,当我尝试实例化一个新的Memcache对象时,我得到:
致命错误:第360行的/websites/../app/app_controller.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/modules
memcache报告告诉我我的php.ini文件设置正确,而memcache.so文件位于正确的位置,但这里的信息只是为了清楚:
extension_dir = "/usr/local/php53/modules"
extension=memcache.so
和memcache.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。
答案 0 :(得分:4)
这个讨论已经沉默,所以我想发布我的修复(我 包裹起来)。
基本上,我停止使用我的os(mac osX 10.5.3)附带的apache / php组合并重新安装。我首先尝试homebrew,但在尝试安装wget时遇到了一堆错误,然后在尝试安装justin hileman's php formula时再次出现错误。因此,作为自制程序故障排除过程的一部分卸载了macports,我重新安装了macport并安装了所有内容。但是,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
此时一切都是小狗和彩虹。
答案 1 :(得分:3)
Oki所以加载了memcache模块,但是包含路径呢?错误告诉你它找不到memcache类,所以看看get_include_path和set_include_path函数以及memcache类文件的实际位置。从外观上看,我认为你是应用程序重新设置包含路径但是不保留php.ini的默认包含路径,它应该保留旧路径。像这样的人:
<?php
$path = '/some/app/include/path';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
?>
答案 2 :(得分:2)
使用:
sudo a2enmod memcache
或类似的。