Một khách hàng của tôi đang báo cáo một vấn đề kỳ lạ với một số mã trong hệ thống Magento của họ (Magento là một nền tảng thương mại điện tử được viết bằng PHP). Tôi không có quyền truy cập trực tiếp vào hệ thống để poke xung quanh và gỡ lỗi, vì vậy tôi nghĩ rằng tôi muốn hỏi Stack Overflow nếu bạn đã từng nhìn thấy bất cứ điều gì như thế này.PHP cố gắng Tự động tải Tên Lớp Ngẫu nhiên
Các lỗi họ thỉnh thoảng nhìn thấy là
Warning: include(O1ucm02owqn3iwwcx5osz2m2.php): failed to open stream:
Với một chồng gọi bao gồm
#0 /Users/theirusername/Sites/project/lib/Varien/Autoload.php(93): mageCoreErrorHandler(2, 'include(O1ucm02...', '/Users/theiruse...', 93, Array)
#1 /Users/theirusername/Sites/project/lib/Varien/Autoload.php(93): Varien_Autoload::autoload()
#2 [internal function]: Varien_Autoload->autoload('o1ucm02owqn3iww...')
#3 [internal function]: spl_autoload_call('o1ucm02owqn3iww...')
#4 /Users/theirusername/Sites/project/app/code/local/Theirname/Commercebug/Model/Observer.php(191): defined('Mage_Core_Block...')
Từ đó, tôi có thể suy luận rằng PHP nghĩ nó cần phải khởi tạo một lớp có tên O1ucm02owqn3iwwcx5osz2m2
. Tuy nhiên, tôi không thể tìm ra được lý do tại sao PHP có thể thực hiện việc này. Các dòng kích hoạt lỗi (# 4 trong callstack, xung quanh dòng 191 trong Observer.php
) nên
if(defined("Mage_Core_Block_Template::XML_PATH_DEBUG_TEMPLATE_HINTS"))
{
$path = Mage_Core_Block_Template::XML_PATH_DEBUG_TEMPLATE_HINTS;
}
Những dòng này dường như không đề cập đến bất kỳ lớp PHP tên O1ucm02owqn3iwwcx5osz2m2
(tôi nói "cần được" vì khách hàng đã tự triển khai mã, tôi đang làm việc với họ để lấy một bản sao để tìm kiếm các vấn đề tiềm ẩn).
Có ai có ý tưởng gì có thể xảy ra không? Đây có phải là một lỗi/vấn đề PHP đã biết với một số phiên bản và/hoặc có ai nhìn thấy một vấn đề như thế này với các trình nạp tự động PHP/defined
/hằng số lớp không?
(Tôi đang làm việc với khách hàng của mình để xác định phiên bản PHP họ đang chạy, cũng như nhận bản sao các tệp mà họ đã triển khai để đảm bảo chúng khớp với những gì tôi cho là có.)
Các tiện ích mở rộng của bên thứ ba khác mà họ đang sử dụng là gì? Họ cũng có những module PHP nào khác? Cảm thấy như một số loại tham nhũng. Họ có sử dụng APC hoặc XCache hoặc eAccelerator không? Ngoài ra, nó luôn luôn là cùng một lớp yêu cầu hoặc là nó luôn luôn là một số chuỗi vô nghĩa ngẫu nhiên? –
Xảy ra khi sử dụng Zend Guard Loader bằng bất kỳ cơ hội nào? Có vẻ như quá nhiều lần trong việc thay đổi tên theo thời gian và do đó phá vỡ các kịch bản theo cách bạn mô tả – Jasper
trông giống như phần mềm độc hại đối với tôi –