Bílá stránka na produkčním serveru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
chikeet
Člen | 160
+
0
-

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)

jiri.pudil
Nette Blogger | 1032
+
0
-

Vymazala jsi po uploadu jiné verze webu cache?

enumag
Člen | 2118
+
0
-

Zkoušelas tento postup?

chikeet
Člen | 160
+
0
-

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
+
0
-

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.

castamir
Člen | 629
+
0
-

Nemáš v projektu nějakou velkou knihovnu, kterou ti skenuje robotloader? Mě to v jednom projektu způsobovala MPDF knihovna. Řešením bylo umístit do /libs soubor netterobots.txt s následujícím obsahem

Disallow: nazev_slozky_s_knihovnou

Editoval castamir (19. 1. 2013 15:53)

chikeet
Člen | 160
+
0
-

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
+
0
-

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)

chikeet
Člen | 160
+
0
-

Já trubka. Neumím přečíst název adresáře.

Disallow: /MPDF54

zabralo :-) Díky moc.