Un mio cliente segnala un problema strano con un codice nel proprio sistema Magento (Magento è una piattaforma di e-commerce scritta in PHP). Non ho accesso diretto al sistema per sondare e eseguire il debug, quindi ho pensato di chiedere a Stack Overflow se hai mai visto qualcosa di simile.PHP tenta di eseguire il caricamento automatico Nome classe casuale
L'errore che stanno vedendo è di tanto in tanto
Warning: include(O1ucm02owqn3iwwcx5osz2m2.php): failed to open stream:
Con uno stack di chiamate che include
#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...')
Da questo, posso dedurre che PHP pensa che ha bisogno di creare un'istanza di una classe denominata O1ucm02owqn3iwwcx5osz2m2
. Tuttavia, non riesco a capire perché il PHP potrebbe fare questo PHP. Le linee che attivano l'errore (# 4 in stack, intorno linea 191 in Observer.php
) dovrebbero essere
if(defined("Mage_Core_Block_Template::XML_PATH_DEBUG_TEMPLATE_HINTS"))
{
$path = Mage_Core_Block_Template::XML_PATH_DEBUG_TEMPLATE_HINTS;
}
Queste linee non sembrano parlare di qualsiasi classe PHP chiamato O1ucm02owqn3iwwcx5osz2m2
(dico "dovrebbe essere" perché il il cliente ha implementato il codice da solo, sto lavorando con loro per ottenere una copia per cercare potenziali problemi).
Qualcuno ha idea di cosa potrebbe succedere? Si tratta di un bug/problema noto di PHP con alcune versioni e/o qualcuno ha riscontrato problemi come questo con i caricatori automatici PHP/defined
/costanti di classe?
(sto lavorando con il mio cliente per determinare la versione di PHP sono in esecuzione, così come ottenere una copia dei file che hanno dispiegati per garantire che corrispondano quello che presumo sono lì.)
Quali altre estensioni di terze parti stanno utilizzando? Anche quali altri moduli PHP hanno? Sembra un qualche tipo di corruzione. Usano APC o XCache o eAccelerator? Inoltre, è sempre la stessa classe richiesta o è sempre una serie di assurdità casuali? –
Capita di usare Zend Guard Loader per caso? Sembra che sia troppo zelante nel cambiare i nomi di volta in volta e quindi rompendo gli script nel modo in cui descrivi lo – Jasper
mi sembra il malware –