【问题标题】:Symfony 1.4 / Doctrine 1.2 cannot recognize APC extension is loadedSymfony 1.4 / Doctrine 1.2 无法识别 APC 扩展已加载
【发布时间】:2012-06-29 14:50:57
【问题描述】:

我正在尝试配置 APC 以使用我的 Symfony 1.4/Doctrine 1.2 网站。我目前正在使用 WAMP 2.1,并且成功安装了 APC 扩展。当我执行 phpinfo() 时,我得到显示 APC 已启用的描述。

apc
APC Support enabled
Version 3.1.6
APC Debugging   Disabled
MMAP Support    Disabled
Locking type    File Locks
Revision    $Revision: 303642 $
Build Date  Dec 1 2010 21:08:06

Directive   Local Value Master Value
apc.cache_by_default    On  On
apc.canonicalize    On  On
apc.coredump_unmap  Off Off
apc.enable_cli  Off Off
apc.enabled On  On
apc.file_md5    Off Off
apc.file_update_protection  2   2
apc.filters no value    no value
apc.gc_ttl  3600    3600
apc.include_once_override   Off Off
apc.lazy_classes    Off Off
apc.lazy_functions  Off Off
apc.max_file_size   10M 10M
apc.num_files_hint  1000    1000
apc.preload_path    no value    no value
apc.report_autofilter   Off Off
apc.rfc1867 Off Off
apc.rfc1867_freq    0   0
apc.rfc1867_name    APC_UPLOAD_PROGRESS APC_UPLOAD_PROGRESS
apc.rfc1867_prefix  upload_ upload_
apc.rfc1867_ttl 3600    3600
apc.shm_segments    1   1
apc.shm_size    64M 64M
apc.slam_defense    On  On
apc.stat    On  On
apc.stat_ctime  Off Off
apc.ttl 0   0
apc.use_request_time    On  On
apc.user_entries_hint   4096    4096
apc.user_ttl    0   0
apc.write_lock  On  On

但是,当我尝试在 symfony ProjectConfiguration.class 中设置查询缓存以使用 APC 时,我收到一条错误消息,提示 APC 扩展未加载:

  public function configureDoctrine(Doctrine_Manager $manager)
  {
      $manager->setAttribute(Doctrine_Core::ATTR_QUERY_CLASS, 'Doctrine_Query_Extra');
      $manager->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE, new Doctrine_Cache_Apc());  //use APC to query cache
  }

这是我在运行清除缓存(php symfony cc)时遇到的错误:

致命错误:未捕获的异常“Doctrine_Cache_Exception”与 消息“必须加载 apc 扩展才能使用此后端!” 在 C:..\lib\vend 或\symfony-1.4.14\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Cach e\Apc.php:44

我一直在谷歌上搜索,但我似乎无法弄清楚。我重新启动了 WAMP 无济于事。我认为这可能是我下载的 APC 扩展的问题。我读到我必须为 WAMPSERVER 2.1 使用 VC6 编译版本,所以我这样做了。我找到了一个标有“php_apc_316_php53_vc6.dll”的二进制文件。我可以看到它在 phpinfo() 中启用的事实应该意味着它已正确安装,对吗?在 ProjectConfiguration.class 中添加该行之前,我是否缺少一些 symfony 配置?另外,当我尝试使用 memcache 作为查询缓存时,我遇到了完全相同的错误,即使我的 memcache 服务器已安装并正常运行,这让我相信我错过了某种 Symfony/Doctrine 配置步骤。

任何帮助将不胜感激!谢谢! 弗兰克

【问题讨论】:

  • 澄清一下,您在使用 cli 和/或 Web 界面时遇到错误?如果是这样,它可能是 php.ini 配置(因为它们对于 cli 和 apache 是不同的)
  • 感谢您的回复,我在使用 cli 时遇到了错误。

标签: php apache symfony1 doctrine apc


【解决方案1】:

想通了。事实证明这是一个简单的修复。我在 CLI 中使用的 php 与我设置 APC 的 php 版本相关联的版本不同。我的 wampserver 上有 2 个版本的 PHP 设置。 Windows 7 中的 path 环境变量设置为错误的 php 版本目录。所以当我运行“php symfony cc”时,它使用了错误的 php 版本。

信用在这里:http://oldforum.symfony-project.org/index.php/m/93957/?srch=memcached#msg_93957

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多