在你讀之前:
- 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 版本。