【问题标题】:Enabling memcache on Mac OSX with stock apache and php5使用股票 apache 和 php5 在 Mac OSX 上启用 memcache
【发布时间】:2009-05-15 05:32:09
【问题描述】:

我一生都无法弄清楚如何在 Mac OSX 上启用 memcache 以与 apache 一起工作。我已经安装了 memcache,并且可以通过 php 命令行验证它是否正常工作。

以下命令:

php --ri memcache

报告支持 memcache。

但是,如果我在浏览器中加载执行 phpinfo() 的本地测试脚本,它不会报告已安装 memcahe。在我的浏览器中运行一个脚本来实例化一个新的内存缓存对象报告:

Fatal error: Class ‘Memcache’ not found

我已经编辑了 php.ini 并添加了 extensions=memcache.so

我已经通过转到系统偏好设置->共享并禁用和启用 Web 共享来重新启动 apache。我什至尝试使用 sudo apachectl restart 从命令行重新启动 apache。

当通过浏览器执行时,我可能会遗漏什么阻止 php 识别 memcache?

谢谢!

【问题讨论】:

  • 我有完全相同的问题..还有这么多线程但不是一个正在运行的解决方案!

标签: macos memcached


【解决方案1】:

您可能会将 memcache.so 扩展安装在 */no-debug-non-zts-* 目录中,这有时会很痛苦(在 Linux 上也是如此),并且 php.ini 可能不会在此目录中查找。您可以更改 php.ini 中的扩展目录(这可能会破坏其他内容),或者更好地在 */no-debug-non-zts-* 目录中创建指向 memcache.so 文件的符号链接。

就我而言,这是:

ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so /usr/lib64/php/modules/memcache.so

进一步检查 memcache.so 文件的权限并确保它是可执行的 (755),在我的例子中是:

chmod 755 /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so

希望能有所帮助,这是我最后的建议 :)

【讨论】:

  • 这对我有帮助 - 问题是由于我在我的 mac 上安装东西的各种方式(主要是 brew,但不完全是)。 PHP CLI 已加载 memcached,但在 mod_php (apache) 下它使用不同的目录来查找扩展。您可以通过复制/符号链接文件来解决此问题。检查 apache 下 php -iphpinfo() 中的“extension_dir”值。
  • 我的在 /usr/libexec/apache2/mod_socache_memcache.so 。在 CLI 中一切正常,但 Apache 无法加载 memcache 知道为什么吗?
【解决方案2】:

看来命令行 php 和 mod_php 使用的是不同版本的 php.ini。

【讨论】:

    【解决方案3】:

    你用内存缓存做什么?你是如何启动它的?你的机器上也运行了 memcached 吗?

    这不是一个专门的 mac 答案,但希望它能让您沿着运行路线前进,如果这是显而易见的,请道歉。

    你需要 memcached 运行在 mac 上或 mac 可以通过 memcached 端口访问的另一台机器上。

    在 Mac 上的 memcached 上有一个特定的文档 - http://memcached.darwinports.com/

    请记住,您还需要配置 php 以将 memcache 用于您希望 memcache 缓存的任何内容,例如更改相关的 PHP 设置,例如使用 memcache 处理会话:

    session.save_handler = 文件
    改为:
    session.save_handler = 内存缓存

    session.save_path="tcp://:11211?persistent=1&weight=1&timeout=1&retry_interval=2"

    希望这在某种程度上有所帮助。

    http://www.of-networks.co.uk

    【讨论】:

    • 谢谢,但我正在寻找专门解决我的 mac osx 问题的答案。我相信我在 apache 或 php 中的某处缺少配置。在运行 ubuntu 的生产服务器上,我已成功安装 memcached 以供命令行和 Web 使用。
    • 嗨 Halbet 显然 cmets 只能是 600 个字符(如果你漫不经心的话,那就不好了)。正在尝试添加另一个答案。
    • 这并没有解决 OP 所要求的实际问题。很明显他在尝试使用memcache客户端,apache下的php找不到(但是安装是因为CLI可以找到)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2012-12-22
    相关资源
    最近更新 更多