這個 PHP 錯誤通常發生在嘗試透過 HTTPS 協議獲取影像時,由於缺少或過期的 CA 證書導致 SSL 連線驗證失敗。以下是詳細的解決方案:
解決方案一:更新 CA 證書
-
下載最新的 CA 證書
- 訪問 curl 官方提供的 CA 證書 頁面下載
cacert.pem
檔案。
- 訪問 curl 官方提供的 CA 證書 頁面下載
-
上傳證書檔案
- 將下載的
cacert.pem
檔案上傳到伺服器上的適當位置。例如,可以上傳到/www/server/php
目錄。
- 將下載的
-
修改 PHP 配置檔案
- 找到對應 PHP 版本的
php.ini
檔案。 - 修改或新增以下配置:
ini
openssl.cafile=/path/to/cacert.pem
/path/to/cacert.pem
應該替換為你實際存放cacert.pem
的路徑。
- 找到對應 PHP 版本的
-
重啟 PHP 服務
- 根據你的伺服器環境,執行相應的命令來重啟 PHP-FPM 或其他相關服務。
其他可能的解決方案
-
檢查 PHP 版本和擴充套件
- 確保 PHP 已安裝了
openssl
擴充套件。 - 更新到最新版的 PHP 可能有助於解決某些相容性問題。
- 確保 PHP 已安裝了
-
環境變數設定
- 如果在 Docker 容器或其他隔離環境中執行 PHP,確保正確設定了
OPENSSL_CONF
環境變數指向cacert.pem
檔案的位置。
- 如果在 Docker 容器或其他隔離環境中執行 PHP,確保正確設定了
-
禁用 SSL 驗證(不推薦)
- 作為臨時措施,可以透過禁用 SSL 驗證來繞過此問題,但這會增加安全風險。
ini
open_basedir=/path/to/trusted/directory
- 作為臨時措施,可以透過禁用 SSL 驗證來繞過此問題,但這會增加安全風險。
以上步驟應該能夠幫助你解決 getimagesize()
函式在處理 HTTPS 影像時遇到的 SSL 驗證失敗問題。如果問題仍然存在,請檢查伺服器日誌以獲取更多詳細資訊。