在你读之前:
- PHP 未加载扩展没有回答我的问题,因为我没有 Apache。我有 IIS。
- PHP 的 MySQL 扩展不起作用没有回答我的问题,因为这些文件具有与所有其他 DLL 文件相同的权限,并且没有破坏继承。
- IIS 上的 PHP 无法加载 sqlsrv 扩展没有回答我的问题,因为该项目是针对最新版本的。
我目前有一个 PHP 脚本,它只是添加了 Redis(使用 PhpRedis)。
<?php
$redis = new Redis ();
?>
这将创建“500 内部服务器错误”消息。检查 PHP 7.4 x64 的日志后,尽管位于这里,加载页面会触发错误:
[06-Aug-2021 15:54:13 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'php_redis.dll' (tried: C:\Program Files\PHP\v7.4\ext\php_redis.dll (The specified module could not be found.), C:\Program Files\PHP\v7.4\ext\php_php_redis.dll.dll (The specified module could not be found.)) in Unknown on line 0
它没有在错误的地方搜索或者没有添加,因为这些条目php.ini
:
[WebPIChanges]
extension_dir="C:\Program Files\PHP\v7.4\ext\"
...
[ExtensionList]
extension=php_redis.dll
...
互联网信息服务能在扩展管理器中检测redis插件,并显示已启用。
此问题出现在 v7.4 中。我已在 v8.0 中尝试过此方法,但仍然遇到相同的问题。PhpRedis 5.3.4 提供了一个 v7.4 DLL,仍存在相同的问题,并且没有意识到任何依赖关系。
答案1
问题已解决。我编译的 PHP 版本不支持线程安全功能,因此我必须编译具有线程安全的版本或使用 PhpRedis 的 NTS 版本。