如何在Windows上安装PHP 7扩展程序"memcache"

6

我在安装php的memcached扩展时遇到了很大的问题。

当前使用:

操作系统:Windows 10 x64
PHP:7.0.1 via XAMPP
Apache:2.4.18 (Win32)

我已经成功地将memcached安装在C:/memcached,服务正在运行。

但是当我尝试添加memcache php扩展时,问题就开始了。我尝试了许多版本的php_memcache.dll,但没有一个能够正常工作。
我已经在php.ini中包含了扩展 extension=php_memcache.dll

当我运行php -m时,memcache没有列出,并且在顶部我收到错误:

PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_memcache.dll'
- The specified module could not be found.

当我尝试运行用于memcache初始化的test.php时,我收到Class not found exception

这是一个巨大的问题,因为我需要它来运行selenium测试。


1
你有检查过路径以确保文件存在吗?因为PHP说文件不存在。 - Machavity
2
https://github.com/nono303/PHP7-memcahe-dll - Abdulla Nilam
@Spartan 谢谢您的回复,那个链接看起来非常有用。但是请问您能否给我一些提示(这是我第一次添加扩展)。我只需要将.dll文件添加到php/ext中并在php.in中添加一行吗?我已经这样做了,但问题仍然存在。 - Mihailo
感谢@Sherif,是的,不幸的是这会有很大的影响。 - Mihailo
在这里使用 D 的 memcached:https://dev59.com/questions/eW855IYBdhLWcg3wVi23 - Jonathan
1个回答

12

memcached服务实际上没有为您安装PHP memcached扩展,它只安装用于存储缓存的memcached服务器。

您需要先从PECL代码库下载Windows DLL文件点击蓝色的Windows DLL链接)。然后,您必须为适合您SAPI的正确php.ini文件添加extension=php_memcache.dll行。此外,请注意扩展DLL文件需要放置在XAMPP安装的正确路径中。

对于Apache用户,只需在文档根目录中创建一个带有<?php phpinfo();一行的脚本,然后尝试在Web浏览器中加载该脚本。您应该会看到顶部标记为Loaded configuration (php.ini)的行,其中给出了已加载的php.ini文件的完整路径。在Windows中,如果您通过XAMPP等方式安装PHP,则路径可能与phpinfo()中所述的不同。因此,您可能需要依赖XAMPP来定位正确的php.ini文件。

对于CLI SAPI用户,可以使用php.exe --ini命令完成相同的操作。同样,您可能需要依赖XAMPP软件包,因为它可能修改了您的配置路径(因为这是一个编译时指令)。

在对php.ini进行更改后,您需要重新启动PHP以使更改生效。


由于您在Windows上使用的是PHP 7,因此需要注意的一点是,PECL编译的DLL可能在Windows下的apache中无法正常工作,因为您很可能正在使用线程化的SAPI。因此,请确保下载正确的版本。据我所知,该版本只编译到与PHP 5.6兼容。如评论中提到的,针对PHP 7的github备选方案https://github.com/nono303/PHP7-memcahe-dll已经测试过非线程安全。因此,在Windows上,您可能只能将其应用于CLI脚本。


非常感谢您抽出时间撰写如此详细的回复。是的,我知道它不行,我尝试下载了PECL提供的每个.dll文件,但都没有成功。正如指南所指出的那样,extension=php_memcache.dll已经添加到了我的php.ini中。而且dll文件也与其他文件一起放置在了C:\xampp\php\ext目录下。但是,仍然无法在phpinfo()php -m列表中找到memcache。php -m列表仍然会给出上述错误。+我在更改后确实重新启动了Apache - Mihailo
1
啊,我还没有尝试过那个代码库中的所有dll文件... x86 ts 就解决了问题。非常感谢 @Sherif :] - Mihailo
太好了,很高兴知道它起作用了。在Windows上尝试错误的版本通常是人们在处理此问题时最常见的错误之一。 - Sherif
3
这是针对memcache而非memcached - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接