Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用apache和php5在Mac OSX上启用memcache_Macos_Memcached - Fatal编程技术网

Macos 使用apache和php5在Mac OSX上启用memcache

Macos 使用apache和php5在Mac OSX上启用memcache,macos,memcached,Macos,Memcached,我一辈子都想不出如何让MacOSX上的memcache与apache一起工作。我已经安装了memcache,可以通过php命令行验证它是否正常工作 以下命令: php --ri memcache 报告支持memcache 但是,如果我在浏览器中加载执行phpinfo()的本地测试脚本,它不会报告安装了memcahe。在浏览器中运行实例化新memcache对象的脚本会报告: Fatal error: Class ‘Memcache’ not found 我编辑了php.ini并添加了exten

我一辈子都想不出如何让MacOSX上的memcache与apache一起工作。我已经安装了memcache,可以通过php命令行验证它是否正常工作

以下命令:

php --ri memcache
报告支持memcache

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

Fatal error: Class ‘Memcache’ not found
我编辑了php.ini并添加了extensions=memcache.so

我通过进入系统首选项->共享、禁用和启用Web共享重新启动了apache。我甚至尝试过从命令行w/sudo apachectl restart重新启动apache

在通过浏览器执行时,有什么东西会阻止php识别memcache呢


谢谢

您使用memcache的目的是什么?你是怎么开始的?你有没有在机器上运行memcached

这不是一个明确的mac答案,但希望它能引导你沿着跑步路线前进,如果这涵盖了显而易见的问题,请道歉

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

在Mac上的memcached上有一个特定的文档-

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

session.save_handler=文件
改为:
session.save_handler=memcache

session.save_path=“tcp://:11211?持久性=1&weight=1&timeout=1&retry_interval=2”

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


您可能会将memcache.so扩展安装在
*/no debug non-zts-*
目录中,这有时会很痛苦(在Linux上也是如此),php.ini可能不在该目录中。您可以更改php.ini中的extensions目录(这可能会破坏其他内容),或者最好在
*/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
chmod 755 /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so
除此之外,请检查memcache.so文件的权限,并确保它是可执行的(755),在我的例子中,这是:

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

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

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

谢谢,但我正在寻找一个专门解决我的mac osx问题的答案。我相信我在apache或php中缺少配置。在我运行ubuntu的生产服务器上,我已经成功地为命令行和web使用安装了memcached。试图添加另一个答案。这并不能解决OP提出的实际问题。很明显,他试图在apache下使用memcache客户端和PHP,但找不到它(但安装它是因为CLI可以找到它)。这对我很有帮助——问题在于我在mac上安装东西的各种方式(主要是brew,但不完全是brew)。PHP CLI加载了memcached,但在mod_PHP(apache)下,它使用不同的目录查找扩展。您可以通过复制/符号链接文件来修复此问题。检查apache下
php-i
vs
phpinfo()
中的“extension\u dir”值。我的值在/usr/libexec/apache2/mod\u socache\u memcache.so中。在CLI中,一切正常,但Apache无法加载memcache知道为什么吗?我有完全相同的问题..和这么多线程,但没有运行的解决方案!