Bílá stránka na produkčním serveru
- chikeet
- Člen | 160
Zdravím, mám problém s bílou stránkou na produkčním serveru.
Nette: 2.0.3, revize eb558ae released on 2012–04–04
PHP: 5.4.4 localhost, 5.3.3–7+squeeze14 produkční server (podrobně na http://www.korona-travel.cz/www/)
Na localhostu jede všechno v pohodě.
K tempu mám práva 777 (i na produkčním serveru).
Laděnka je nastavená na
$configurator->setDebugMode([moje IP]);
Checker se zdá být taky ok (http://korona-travel.cz/…/checker.php).
V error logu na serveru taky nic zvláštního.
Na produkčním serveru laděnka nic nevyhazuje. Respektive vyhodila error jen při špatně nastavených právech pro temp, jinak na nic nereaguje.
Primitivním způsobem typu
echo 'test';
jsem zjistila, že v bootstrapu běží všechno až po
$configurator->createRobotLoader()
->addDirectory(APP_DIR)
->addDirectory(LIBS_DIR)
->register();
- na řádku ->register(); se to zasekne.
Na produkčním serveru web doteď běžel bez problémů. Problém nastal po uploadu nové verze webu, která na localhostu fungovala rovněž bez problémů. Po smazání nové verze a uploadu zálohy původní verze, která fungovala i na produkčním serveru, problém stále přetrvává. Nemáte někdo tušení, co by to mohlo způsobit?
Předem díky za jakoukoliv konstruktivní odpověď.
Editoval chikeet (19. 1. 2013 4:16)
- chikeet
- Člen | 160
jiri.pudil: vymazala, zkoušela jsem jak smazání celého obsahu složky temp, tak i smazání obsahu všech podadresářů.
enumag: zkoušela jsem jiný, kde chyběl bod 3 (zkusíme odkomentovat RewriteBase v .htaccess), nicméně ani to nepomohlo.
Procházela jsem všechny body postupu ještě jednou a při té příležitosti jsem zjistila, že oprávnění u složky log jsem sice nastavovala, ale u některých souborů (včetně error.log) se nezměnily, protože nemám oprávnění je nastavit. Řeším to se správcem serveru, ale to je na dlouho.
Taky jsem v error logu (tentokrát už v logu nette místo logu v rootu webu) narazila na tohle:
[2013–01–19 03–04–55] Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in /var/www/clients/client6/web4/web/libs/Nette/Loaders/RobotLoader.php:304 @ http://www.korona-travel.cz/…e/default/14 @@ exception-2013–01–19–03–02–36-f75bc7e8add4199be2cd825fff4ca1b3.html
[2013–01–19 04–05–01] Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 5 bytes) in /var/www/clients/client6/web4/web/libs/Nette/Loaders/RobotLoader.php:300 @ http://www.korona-travel.cz/www/ @@ exception-2013–01–19–04–05–01–137e129f95db508d5d72527aa89ac0bb.html
Příslušné soubory s výjimkami mají velikost 0 B a oprávnění 644.
Kód RobotLoaderu v místě, kde to vyhazuje výše uvedené chyby (první řádek je 300):
foreach (@token_get_all($s) as $token) { // intentionally @
if (is_array($token)) {
switch ($token[0]) {
case T_COMMENT:
case T_DOC_COMMENT:
case T_WHITESPACE:
continue 2;
Může to všechno být způsobeno jen špatným nastavením oprávnění k logu?
Jde mi o to, zjistit pokud možno všechny problémy, protože komunikace se správcem serveru probíhá přes dalšího člověka, který je dost vytížený a řešení problémů přes něj je na dlouho. (Web není můj, majitel má levný hosting díky osobním kontaktům a měnit ho nechce.)
Ještě dvě věci:
Než začal web zobrazovat jen bílou stránku, několikrát se načetla jen
část stránky. Zdrojový kód končil někde v půlce menu.
V temp/cache/ byly dvě složky _Nette.Database.*, přičemž jedna obsahovala
opět soubory s oprávněním 644.
Omlouvám se za dlouhý příspěvek, snažím se poskytnout maximální
množství informací k vyřešení problému.
A děkuju za rady, posunuly mě aspoň o kousek dál.
- enumag
- Člen | 2118
Fatal error: Allowed memory size of 134217728 bytes exhausted
Tahle chyba znamená nedostatek paměti. Zjisti z phpinfo(); hodnotu direktivy memory_limit.
Také doporučuji spustit na serveru Requirements checker.
- chikeet
- Člen | 160
enumag: memory limit je 128 M, což už jsem si ostatně spočítala z těch 134217728 bytes. Checker jsem zkoušela hned na začátku, všechno v pořádku, jen Memcache extension a Bundled GD extension jsou disabled, ale vzhledem k tomu, že jsou to warningy, předpokládám, že by to nemělo mít zásadní vliv na funkčnost webu. Nebo se pletu?
castamir: Díky, MPDF používám a zkusila jsem to, co radíš. Má to být zapsané přesně takhle, žádné středníky apod.? Zatím jsem to pořád nerozjela, takže buď mi v tom zápisu něco chybí, nebo to visí ještě na těch oprávněních k error logu. Případně ještě na něčem dalším.
- castamir
- Člen | 629
adresářová struktura:
/libs/
/libs/Nette/
/libs/mpdf/
/libs/netterobots.txt
obsah netterobots.txt
Disallow: mpdf
a pak mám jednu třídu PDF, která mpdf používá. Před definicí třídy PDF mám
include(LIBS_DIR . '/mpdf/mpdf.php');
edit: Napadá mě ještě – zkontroluj si, zda doopravdy využíváš robotloader a ne autoload z composeru. Tam by byla potřeba nejspíš jiná úprava.
Editoval castamir (19. 1. 2013 16:39)