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