До того как вы прочтете:
- PHP не загружает расширенияне отвечает на мой вопрос, потому что у меня нет Apache. У меня есть IIS.
- Расширение MySQL для PHP не работаетне отвечает на мой вопрос, поскольку файлы имеют те же разрешения, что и все другие файлы DLL, и наследование не нарушено.
- PHP на IIS не загружает расширение sqlsrvне отвечает на мой вопрос, так как товар относится к последней версии.
В настоящее время у меня есть PHP-скрипт, который просто добавляет Redis (используя PhpRedis).
<?php
$redis = new Redis ();
?>
Это создает сообщение "500 Internal Server Error". При проверке логов 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 предоставляет DLL v7.4, все та же проблема без учета зависимостей.
решение1
Проблема решена. Моя скомпилированная версия PHP не поддерживает функции потокобезопасности, поэтому мне нужно либо скомпилировать версию с потокобезопасностью, либо использовать NTS-версию PhpRedis.