繁体   English   中英

Memcache&php:致命错误:未找到类'Memcache'

[英]Memcache & php: Fatal error: Class 'Memcache' not found in

我发现了几个非常相似的问题。 但是,每个人都指向使用错误的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。

这个讨论已经沉默,所以我想发布我的修复(我刚刚结束)。

基本上,我停止使用我的os(mac osX 10.5.3)附带的apache / php组合并重新安装。 我第一次尝试自制软件,但在尝试安装wget时遇到了一堆错误,然后在尝试安装justin hileman的php公式时再次出现错误。 因此,作为自制程序故障排除过程的一部分卸载了macports,我重新安装了macport并安装了所有内容。 然而,macports糟透了,并没有正确安装php与mysql支持,所以我只是抓住我想要的PHP二进制文件并使用以下配置选项安装旧时尚方式:

--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

此时一切都是小狗和彩虹。

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);
?>

采用:

sudo a2enmod memcache

或类似的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM