類別:系統及安全性
| 發布於 2025-06-23 21:26
Call to undefined function openssl_decrypt()
錯誤排除
當遇到 Call to undefined function openssl_decrypt() 的錯誤,表示 PHP 缺少
OpenSSL 擴展模組的支援。以下是完整的排除流程:
錯誤排除流程
1. 確認 PHP 已啟用 OpenSSL 擴展
打開 php.ini 設定檔,搜尋以下設定:
請確保該行未被註解(前面沒有 ;
號),若尚未啟用請移除註解後儲存檔案。
在 Windows 系統下有時為:
2. 重啟伺服器
更改 php.ini 後,記得重啟你的 Web Server(Apache、Nginx
等) 以套用設定。
例如 Apache:
3. 確認必要 DLL 檔案(僅限 Windows)
如果你在 Windows 系統使用 Apache 或 CLI 模式,還需確認 PHP 安裝目錄下的以下 DLL 是否存在,並可正確載入:
libcrypto-*.dll(舊版可能為 libeay32.dll)
libssl-*.dll(舊版可能為 ssleay32.dll)
若 Apache/bin 目錄下缺少這些檔案,可從 PHP 安裝目錄中複製:
📌 注意:自 PHP 7.4 以後,OpenSSL 使用的是 libcrypto 和
libssl,舊版才使用 libeay32.dll 和
ssleay32.dll,請依 PHP 版本確認所需的 DLL 檔案。
4. 驗證是否成功啟用 OpenSSL 擴展
可以使用以下命令或 PHP 檔案檢查:
或建立 phpinfo() 頁面,確認是否載入 openssl 模組:
頁面中應顯示 OpenSSL support => enabled。
補充說明
- Laravel 使用
openssl_encrypt() 和
openssl_decrypt() 實作內建的加密解密功能(如 Crypt::encrypt() /
decrypt()),缺少 OpenSSL 將導致無法正常執行。
- 部分共用主機可能未啟用此模組,部署時務必檢查伺服器支援情況。
Call to undefined function openssl_decrypt() 錯誤排除
當遇到
Call to undefined function openssl_decrypt()的錯誤,表示 PHP 缺少OpenSSL擴展模組的支援。以下是完整的排除流程:錯誤排除流程
1. 確認 PHP 已啟用 OpenSSL 擴展
打開
php.ini設定檔,搜尋以下設定:extension=openssl請確保該行未被註解(前面沒有
;號),若尚未啟用請移除註解後儲存檔案。在 Windows 系統下有時為:
extension=php_openssl.dll2. 重啟伺服器
更改
php.ini後,記得重啟你的 Web Server(Apache、Nginx 等) 以套用設定。例如 Apache:
# Windows httpd -k restart # 或使用控制面板中的 Apache 管理工具 # Linux sudo systemctl restart apache23. 確認必要 DLL 檔案(僅限 Windows)
如果你在 Windows 系統使用 Apache 或 CLI 模式,還需確認 PHP 安裝目錄下的以下 DLL 是否存在,並可正確載入:
libcrypto-*.dll(舊版可能為libeay32.dll)libssl-*.dll(舊版可能為ssleay32.dll)若 Apache/bin 目錄下缺少這些檔案,可從 PHP 安裝目錄中複製:
# 假設 PHP 安裝在 C:\php copy C:\php\libcrypto-3-x64.dll C:\Apache24\bin\ copy C:\php\libssl-3-x64.dll C:\Apache24\bin\4. 驗證是否成功啟用 OpenSSL 擴展
可以使用以下命令或 PHP 檔案檢查:
或建立
phpinfo()頁面,確認是否載入openssl模組:<?php phpinfo(); ?>頁面中應顯示
OpenSSL support => enabled。補充說明
openssl_encrypt()和openssl_decrypt()實作內建的加密解密功能(如Crypt::encrypt()/decrypt()),缺少 OpenSSL 將導致無法正常執行。