Windows
為什麼 IIS PHP 在存在並正確添加時無法辨識 PhpRedis?
在你讀之前:
- 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 ...
IIS可以在擴展管理器中檢測到 redis 外掛並聲明它已啟用。
此問題出現在 v7.4 中。我已經在 v8.0 中嘗試過,但我仍然面臨同樣的問題。PhpRedis 5.3.4 提供了一個 v7.4 DLL,仍然是同樣的問題,沒有意識到依賴關係。
問題解決了。我編譯的 PHP 版本不支持執行緒安全功能,因此我必須編譯具有執行緒安全的版本或使用 PhpRedis 的 NTS 版本。