PHP Fatal error: Class ‚BasePresenter‘ not found
- BigCharlie
- Člen | 283
Narazil jsem na tuhle chybu za následujících okolností:
- žádná změna ve zdrojových souborech!
- přes týden bezproblematického běhu od poslední úpravy zdrojových souborů
- nepošle se e-mail, naprosto nesmyslně je jako e-mail zadáno „%logDir%/php_error.log“
- stačí smazat temp, vše naskočí
Problémem je, že tu chybu nedokážu vždy přesně reprodukovat. V několika případech se mi podařilo při vyšším zatížení (kontrola odkazů pomocí Xenu) docílit toho, že najednou přestal web odpovídat a vyhazovat tuhle chybu. Ovšem neumím ji vyvolat cíleně.
Zatím jsem to dočasně vyřešil pomocí
$loader->autoRebuild = Environment::isProduction() ? TRUE : FALSE
,
ale zajímá mě příčina.
Napadá někoho, po čem koukat?
Nette: 0.9.3
PHP: 5.2.12
Nastavení Laděnky
<?php
$emailHeaders = array(
'From' => 'xxx',
'To' => 'xxx',
'Subject' => 'Nette - Chyba na serveru %host%',
'Body' => "%date% - %message%.\n\nPro více informací shlédněte error log.",
);
Debug::enable('127.0.0.1, xx.xx.xx.xx', Debug::DETECT, '%logDir%/php_error.log', $emailHeaders);
?>
- BigCharlie
- Člen | 283
Aha, tím se vyřešil problém s odesíláním, místo abych výčtem adres
nahradil Debug::DETECT
, vložil jsem to před. Tam bych určitě
chybu nehledal, přesvědčen o své neomylnosti, díky!
Ale co ten zbytek? Kde hledat příčinu té chyby?
- BigCharlie
- Člen | 283
Laděnka toho bohužel v tu chvíli moc neřekne:
Fatal error: Class ‚BasePresenter‘ not found
Line 8: class ErrorPresenter extends BasePresenter
Jinak nic podstatného. A teď jsem si ověřil, že to dokážu sestřelit kdykoliv puštěním více instancí Xenu (kontroluju tím odkazy). V mém případě stačí tři a spolehlivě to během chvíle klekne.
Dál jsem ověřil, že problém způsobuje zcela jistě RobotLoader – v tempu v jeho adresáři jsou dva soubory – při normálním provozu je jeden z nich o velikosti cca 7KB a ten samý při pádu má necelých 200 bajtů. Stačí je smazat a vše začne fungovat normálně.
- BigCharlie
- Člen | 283
Tak potvrzuji, jasir to trefil, jde o stejný problém, oprava to (jak se zatím zdá), řeší. Díky.