首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

解決 PHP mcrypt 擴展未安裝:Windows 下啟用 mcrypt.so 完整步驟

     編輯:MySQL 綜合教學

解決 PHP mcrypt 擴展未安裝問題

安裝 ShopEx 等舊版 PHP 系統時常報錯:「服務器 Mcrypt.so 加密庫未安裝」。mcrypt 是 PHP 早期常用的加密擴展,**PHP 7.2 已棄用,7.4 移除**,現代專案應遷移至 openssl 或 sodium。本文針對必須維護舊系統的場景,提供 Windows 環境下啟用 mcrypt 步驟。

檢查現狀

php -m | findstr mcrypt
# 或建立 phpinfo.php 頁面檢視

若無輸出,則未載入。

Windows 環境啟用步驟 (PHP 5.x / 7.0 / 7.1)

  1. 確認 DLL 文件存在:PHP 安裝目錄下應有 php_mcrypt.dll、libmcrypt.dll、libmhash.dll。若無,從官方對應版本 ZIP 包獲取。
  2. 複製依賴庫至系統路徑:將 libmcrypt.dll、libmhash.dll 複製到 C:\Windows\System32 (64位系統) 或 C:\Windows\SysWOW64 (32位 PHP 運行於 64位系統)。
  3. 修改 php.ini:搜尋並取消註釋以下兩行 (移除前面分號 ;):
extension=php_mcrypt.dll
extension=php_mhash.dll
  1. 重啟 Web 服務:
  • Apache:httpd -k restart 或服務管理器重啟
  • IIS:iisreset 或應用程式池回收
  • PHP-FPM (Nginx):重啟 php-fpm 服務
  1. 驗證:重新執行 php -m | findstr mcrypt 或刷新 phpinfo,應顯示 mcrypt support => enabled。

常見問題排查

現象原因解決
重啟後仍不顯示修改錯誤的 php.ini執行 php --ini 確認載入的配置文件路徑
Apache 啟動報錯DLL 版本不匹配 (VC 編譯版本、線程安全性)下載與 PHP 版本完全一致的 DLL (VC11/VC14/VC15, TS/NTS)
缺少 libmcrypt.dll未複製到系統目錄複製至 System32/SysWOW64 或 PHP 目錄加入 PATH

現代替代方案 (PHP 7.2+ 必讀)

mcrypt 已從 PHP 核心移除**,PECL 仍提供 pecl install mcrypt 但不再維護。請遷移至:

  • OpenSSL:AES、DES、RSA 等標準加密,openssl_encrypt()/openssl_decrypt()。
  • Sodium (libsodium):PHP 7.2+ 內建,現代高級加密 API (XChaCha20-Poly1305, Ed25519 等),sodium_crypto_aead_*() 系列。
  • 應用層庫:defuse/php-encryption、paragonie/halite 等經審計的高層封裝。

安全警示: mcrypt 實現的加密算法 (如 ECB 模式、靜態 IV) 多不符合現代安全標準。維護舊系統時,應評估加密邏輯風險,規劃遷移至經審計的加密庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved