PbootCMS附件上傳失敗報錯“UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future.”是由於PHP版本更新導致的相容性問題。具體來說,stripos()
函式在處理非字串型別的第二個引數(即needle
)時,未來版本的PHP將會將其視為字串,而當前版本則會發出警告。
解決方案
-
定位問題程式碼:
- 開啟
/core/function/file.php
檔案。 - 找到第176行,該行程式碼應該是:
php
if (stripos($types, $ext) !== false)
- 開啟
-
修改程式碼:
- 將上述程式碼修改為:
php
if (stripos($types, chr($ext)) !== false)
- 將上述程式碼修改為:
-
儲存檔案:
- 儲存修改後的檔案。
-
測試上傳功能:
- 重新嘗試上傳附件,檢查是否解決了報錯問題。
詳細解釋
-
stripos()
函式:stripos()
函式用於查詢字串首次出現的位置,返回位置索引,如果未找到則返回false
。- 第二個引數
needle
(即$ext
)在當前程式碼中可能是非字串型別(例如整數),這在未來的PHP版本中會被視為字串,因此會發出警告。
-
chr()
函式:chr()
函式將整數轉換為對應的ASCII字元。- 透過將
$ext
傳遞給chr()
函式,確保$ext
在傳遞給stripos()
函式時是字串型別,從而避免警告。
其他注意事項
-
備份檔案:
- 在修改任何核心檔案之前,建議先備份原檔案,以便在出現問題時能夠快速恢復。
-
測試環境:
- 如果可能,先在測試環境中進行修改和測試,確保修改不會引入新的問題。
-
官方更新:
- 關注PbootCMS的官方更新,看看是否有新的版本已經修復了這個問題。
希望這些步驟能幫助您解決PbootCMS附件上傳失敗的問題。如果還有其他疑問,歡迎繼續提問。