因为我已经使用 ASP.NET,所以我决定在 IIS 上使用 PHP,我使用 Wep PI 安装它,但是当我尝试安装 Composer 时,他因 PHP 设置错误而失败。
我尝试将 php.ini 中的 extension_dir 更改为绝对且未注释的 php_wincache 扩展,但我的解决方案均无效
C:\Program Files (x86)\iisexpress\PHP 7.2\php.exe
命令行 PHP 使用的 php.ini 为:C:\Program Files (x86)\iisexpress\PHP 7.2\php.ini
php.ini 中的设置可能会导致问题:“extension_dir”值不正确或 dll 不存在。
程序输出: PHP 警告:PHP 启动:无法加载动态库“php_wincache.dll”(已尝试:C:\Program Files (x86)\iisexpress\PHP 7.2 xt\php_wincache.dll(%1 不是应用程序 Win32 验证) .), C:\Program Files (x86)\iisexpress\PHP 7.2 xt\php_php_wincache.dll.dll (Le module spécifié est introuvable.)) 在第 0 行未知
现在回答这个问题有点晚了。但我也面临着同样的问题,并且能够以某种方式解决它。请按照以下步骤解决此问题。
第 1 步:安装适用于 PHP 的 Windows 缓存扩展。
You can install it from http://php.net/manual/en/wincache.installation.php
Or you can use Web Platform Installer. (Please see the screenshot.)
第 2 步:安装后,转到文件夹“Windows Cache for PHP”。复制 php_wincache.dll。
第 3 步:将复制的文件粘贴到您的 PHP/ext 位置。例如“C:/Program Files/PHP/v7.0/ext”。
现在您可以尝试再次安装composer。
希望这对您有帮助。
我遇到了同样的问题,并在 PHP 手册上找到了答案。
7.0的wincache版本是为php7.dll而不是线程编译的 安全的 php7ts.dll。 您可能需要编译 wincache 的源代码或 更改为非线程安全版本。
猜测您已经安装了“线程安全”版本的 PHP,并且没有 WinCache 所需的 php7.dll。
PHP扩展是具有.dll文件扩展名的动态链接库文件,位于extension_dir属性指定的扩展目录中。 php 扩展文件的文件名中包含 php_ 前缀。然而,在 php.ini 文件中,扩展名的书写没有 php_ 前缀或 .dll 后缀。 例如,以下行激活由 php_mysqli.dll 文件表示的 mysqli 扩展。 扩展名=mysqli 当 PHP 解释器想要加载扩展时,它会在扩展名称中添加前缀和后缀。 因此“extension=mysqli”对应于“php_mysqli.dll”。
因此,要启用 wincache 扩展,您必须将以下行添加到 php.ini 文件中
extension = wincache
相反,以下行将生成错误。
extension = php_wincache
因为上面的行将映射到“php_php_wincache.dll.dll”而不是php_wincache.dll。这是因为 PHP 在扩展名中添加了 php_ 前缀和 .dll 后缀。查看 PHP 扩展目录,看看发生了什么。
您的错误消息包含以下行
C:\Program Files (x86)\iis express\PHP\v7.2\ext\php_php_wincache.dll.dll
它正在寻找不存在的“php_php_wincache.dll.dll”文件。
请记住,从 PHP 版本 8.x 开始,PHP 不支持 wincache。因此,如果您使用 PHP 8.x,请在 php.ini 文件中禁用 wincache 扩展。否则,您的 PHP 解释器将默默地生成您可能没有意识到的错误。