[請益] 從PHP7升級到PHP8後 網站出現錯誤

看板PHP作者 (夜風)時間3月前 (2024/06/25 19:30), 3月前編輯推噓0(0010)
留言10則, 4人參與, 3月前最新討論串1/1
先感謝shadowjohn與andylamyy板友提供的解法 修改完後問題就解決了,PHP系統也升級到8.2.20了 以下是這次除錯前後的資料整理 作個紀錄當參考 起因 原本在PHP7能運行的count()程式段,在PHP8會報error Exception: count(): Argument #1 ($value) must be of type Countable|array, null given X:\\count_demo.php 434 434為if(count($new_TimestampTitle)>0){ 報錯原因 因為count()在PHP8需要是array或是countable,否則會報TypeError 在PHP7時期只會跳warning https://www.php.net/manual/en/function.count.php 範例檔案 https://pastebin.com/GkPQk2q3 解決方案 第一種:先作宣告 於第425行後加上以下兩條 $new_Timestamp = []; $new_TimestampTitle = []; 第二種:加上is_countable() 將434的if(count($new_TimestampTitle)>0){ 改為if (is_countable($new_TimestampTitle) && count($new_TimestampTitle) > 0) { 兩種方式執行在PHP8都不會報錯 第一種是板友的建議 第二種是ChatGPT的建議 至於兩者執行結果有什麼差別我就不懂了@@ 感謝各位的協助 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.173.230 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1719315042.A.EFE.html

06/25 22:02, 3月前 , 1F
Windows + PHP 請留意最近的高風險漏洞 CVE-2024-4577
06/25 22:02, 1F

06/26 06:46, 3月前 , 2F
也是擔心漏洞問題,才想升級
06/26 06:46, 2F

06/26 09:14, 3月前 , 3F
tblclip_model.php 434 前幾行看看
06/26 09:14, 3F

06/26 09:14, 3月前 , 4F
感覺應該不是用 count 要用 mb_strlen 或 strlen 吧?
06/26 09:14, 4F

06/26 09:15, 3月前 , 5F
看起來像是只是要算字數
06/26 09:15, 5F

06/26 11:10, 3月前 , 6F
我把tblclip_model.php 434前後的碼放上去了 謝謝
06/26 11:10, 6F

06/26 13:28, 3月前 , 7F
PHP8 陣列在count前要先宣告$new_TimestampTitle = [];
06/26 13:28, 7F

06/26 14:52, 3月前 , 8F
425 $new_Timestamp = []; $new_TimestampTitle = [];
06/26 14:52, 8F

06/26 14:53, 3月前 , 9F
回了,試試:)
06/26 14:53, 9F

06/26 17:33, 3月前 , 10F
謝謝幾位的建議,我會試試看的,感謝
06/26 17:33, 10F
※ 編輯: nightwind209 (114.36.169.42 臺灣), 06/28/2024 14:36:45
文章代碼(AID): #1cUgfYx- (PHP)
文章代碼(AID): #1cUgfYx- (PHP)