Thông báo

VinaBB đang trong trạng thái vọc phá liên tục, mọi trang đều có thể xuất hiện lỗi >w< O:)
Nếu bạn không thể gửi bài trong diễn đàn hỗ trợ, hãy gửi tin nhắn cho chúng tôi qua Facebook: https://facebook.com/vinabb
Trả lời

[PHP 7.2] Lỗi count(): Parameter must be an array or an object...


nedka

nedka

Quản trị viên
23/12/2017 18:56

Sau khi nâng cấp lên PHP 7.2, bạn sẽ nhận thấy nhiều trang trong bảng quản trị phpBB xuất hiện lỗi:

Chép
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable
Hoặc khi mới lần đầu truy cập một trang nào đó:
Chép
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 583: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 639: sizeof(): Parameter must be an array or an object that implements Countable
Nguyên nhân là do kể từ PHP 7.2, hàm count()sizeof() mà gọi trên biến hay đối tượng null sẽ báo lỗi thay vì trả về 0 như các phiên bản PHP trước.

Để khắc phục, bạn hãy mở tập tin ./vendor/twig/twig/lib/Twig/Extension/Core.php và tìm:
Chép
return count($thing);
Thay thế thành: (tìm và thay thế 2 lần)
Chép
return ($thing === null) ? 0 : count($thing);

Mở tiếp tập tin ./phpbb/session.php, tìm:
Chép
if ($user_id !== false && sizeof($this->data) && $this->data['user_id'] != $user_id)
Thay bằng:
Chép
if ($user_id !== false && isset($this->data['user_id']) && $this->data['user_id'] != $user_id)
Tìm:
Chép
if (sizeof($this->data))
Thay bằng:
Chép
if (isset($this->data['user_id']))
Tìm:
Chép
if (isset($this->cookie_data['k']) && $this->cookie_data['k'] && $this->cookie_data['u'] && !sizeof($this->data))
Thay bằng:
Chép
if (isset($this->cookie_data['k']) && $this->cookie_data['k'] && $this->cookie_data['u'] && empty($this->data))
Tìm:
Chép
if ($user_id !== false && !sizeof($this->data))
Thay bằng:
Chép
if ($user_id !== false && empty($this->data))
Tìm:
Chép
if (!sizeof($this->data) || !is_array($this->data))
Thay bằng:
Chép
if (empty($this->data) || !is_array($this->data))

Tất cả lỗi ở trên đã được sửa trong phpBB 3.2.2. Đây cũng là phiên bản phpBB đầu tiên hỗ trợ PHP 7.2.

Trả lời

VinaBB • The Holy Land of phpBB

Quan điểm

Không đề cập chính trị, tôn giáo, nội dung đồi trụy.
Giữ gìn sự trong sáng của Tiếng Việt.
Không chia sẻ phần mềm vi phạm bản quyền.
Không rao vặt và không nhận đặt quảng cáo.
Dù trong túi hết tiền thì diễn đàn phpBB của anh cũng phải ngay ngắn.

Chuyện tình phpBB

17/07/2004: Yêu phpBB từ phiên bản 2.0.10.
22/10/2006: Cất tiếng cười chào đời.
11/06/2007: Chính thức định cư trên Olympus, Sao Hỏa.
11/06/2009: Mất liên lạc với Trái Đất. [ Phiên bản 2007 ]
28/07/2016: Trôi dạt đến mặt trăng Rhea, Sao Thổ.
12/12/2016: Cuộc hành trình mới lại bắt đầu…

Code in Viet Nam

Cống hiến hết mình vì Tổ Quốc Việt Nam Xã Hội Chủ Nghĩa

Quản trị viên

nedka

VinaBB
VinaBB

NEDKA Solutions

Đơn vị chủ quản

Chúng tôi chịu trách nhiệm toàn bộ nội dung có trên VinaBB trước pháp luật.
Sử dụng phần mềm phpBB
cron