呼叫 HTTPS API、發送郵件、加密傳輸都需要 OpenSSL。本文說明如何在 Windows/Linux 環境啟用 PHP OpenSSL 擴展,並解決「缺少 DLL」、「phpinfo 不顯示」等常見問題。
php.ini(php --ini 或 phpinfo() 查看)extension=php_openssl.dll(Windows)或 extension=openssl(Linux); 取消註解若啟用後仍報錯,需將 PHP 目錄下的兩個 DLL 複製到系統路徑:
ssleay32.dlllibeay32.dll複製目標:C:\Windows\System32\ 或 Apache bin/ 目錄,或加入系統 PATH 環境變數。
<?php phpinfo(); ?>
瀏覽器開啟該頁,搜尋 openssl 區塊,確認:
OpenSSL support = enabledOpenSSL Library Version 顯示版本號| 現象 | 可能原因 | 解決方案 |
|---|---|---|
| phpinfo 無 openssl 區塊 | php.ini 修改錯誤或未重啟服務 | 確認 Loaded Configuration File 路徑、重啟 Apache/php-fpm |
| 啟動報錯「Unable to load dynamic library」 | 缺少 ssleay32.dll / libeay32.dll | 複製 DLL 到系統目錄或 PHP 目錄並加入 PATH |
| stream_socket_client() 失敗 | CA 憑證未設定 | 設定 openssl.cafile 指向 cacert.pem |
| Composer 安裝套件報 SSL 錯誤 | OpenSSL 版本過舊或缺 CA | 更新 PHP/OpenSSL、設定 cacert.pem |
# Ubuntu/Debian sudo apt-get install php-openssl sudo systemctl restart php8.1-fpm # 或對應版本 # CentOS/RHEL sudo yum install php-openssl sudo systemctl restart php-fpm
; php.ini openssl.cafile = /etc/ssl/certs/ca-certificates.crt ; 或 openssl.capath = /etc/ssl/certs
下載最新 cacert.pem 並指定路徑,解決「certificate verify failed」。