PbootCMS附件上傳失敗報錯UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future.

黄文Rex發表於2024-10-20

PbootCMS附件上傳失敗報錯“UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future.”是由於PHP版本更新導致的相容性問題。具體來說,stripos()函式在處理非字串型別的第二個引數(即needle)時,未來版本的PHP將會將其視為字串,而當前版本則會發出警告。

解決方案

  1. 定位問題程式碼

    • 開啟/core/function/file.php檔案。
    • 找到第176行,該行程式碼應該是:
      php
      if (stripos($types, $ext) !== false)
  2. 修改程式碼

    • 將上述程式碼修改為:
      php
      if (stripos($types, chr($ext)) !== false)
  3. 儲存檔案

    • 儲存修改後的檔案。
  4. 測試上傳功能

    • 重新嘗試上傳附件,檢查是否解決了報錯問題。

詳細解釋

  • stripos()函式

    • stripos()函式用於查詢字串首次出現的位置,返回位置索引,如果未找到則返回false
    • 第二個引數needle(即$ext)在當前程式碼中可能是非字串型別(例如整數),這在未來的PHP版本中會被視為字串,因此會發出警告。
  • chr()函式

    • chr()函式將整數轉換為對應的ASCII字元。
    • 透過將$ext傳遞給chr()函式,確保$ext在傳遞給stripos()函式時是字串型別,從而避免警告。

其他注意事項

  • 備份檔案

    • 在修改任何核心檔案之前,建議先備份原檔案,以便在出現問題時能夠快速恢復。
  • 測試環境

    • 如果可能,先在測試環境中進行修改和測試,確保修改不會引入新的問題。
  • 官方更新

    • 關注PbootCMS的官方更新,看看是否有新的版本已經修復了這個問題。

希望這些步驟能幫助您解決PbootCMS附件上傳失敗的問題。如果還有其他疑問,歡迎繼續提問。

相關文章