PHP報錯getimagesize(): SSL operation failed with code 1問題解決方案

黄文Rex發表於2024-10-05

這個 PHP 錯誤通常發生在嘗試透過 HTTPS 協議獲取影像時,由於缺少或過期的 CA 證書導致 SSL 連線驗證失敗。以下是詳細的解決方案:

解決方案一:更新 CA 證書

  1. 下載最新的 CA 證書

    • 訪問 curl 官方提供的 CA 證書 頁面下載 cacert.pem 檔案。
  2. 上傳證書檔案

    • 將下載的 cacert.pem 檔案上傳到伺服器上的適當位置。例如,可以上傳到 /www/server/php 目錄。
  3. 修改 PHP 配置檔案

    • 找到對應 PHP 版本的 php.ini 檔案。
    • 修改或新增以下配置:
      ini
      openssl.cafile=/path/to/cacert.pem
      其中 /path/to/cacert.pem 應該替換為你實際存放 cacert.pem 的路徑。
  4. 重啟 PHP 服務

    • 根據你的伺服器環境,執行相應的命令來重啟 PHP-FPM 或其他相關服務。

其他可能的解決方案

  • 檢查 PHP 版本和擴充套件

    • 確保 PHP 已安裝了 openssl 擴充套件。
    • 更新到最新版的 PHP 可能有助於解決某些相容性問題。
  • 環境變數設定

    • 如果在 Docker 容器或其他隔離環境中執行 PHP,確保正確設定了 OPENSSL_CONF 環境變數指向 cacert.pem 檔案的位置。
  • 禁用 SSL 驗證(不推薦)

    • 作為臨時措施,可以透過禁用 SSL 驗證來繞過此問題,但這會增加安全風險。
      ini
      open_basedir=/path/to/trusted/directory

以上步驟應該能夠幫助你解決 getimagesize() 函式在處理 HTTPS 影像時遇到的 SSL 驗證失敗問題。如果問題仍然存在,請檢查伺服器日誌以獲取更多詳細資訊。

相關文章