Dependency problemy, Error 500, RobotLoader, Cache.php

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

Ahoj,
nejsem si jisty, jestli prizpivam do spravneho vlakna, kdyztak mne prosim presmerujte.
Me nastaveni: LAMP php 5.6, Apache/2.4.18, Ubuntu 16.04
Snazim se na localhostu rozebehnout nette aplikaci a stale dostavam HTTP ERROR 500.
Zvlastni je na tom to, ze se mi nedari najit nic v log souborech. Ani v projektu, ani v /var/log/apache2/access.log nebo /var/log/apache2/access.log nebo var/log/syslog.
Nemam problem rozchodit nette sandbox, pada pouze tato aplikace.
Snazil jsem se nalezt pricinu pomoci die() a nakonec jsem skoncil u funkce load v ramci vendor/nette/caching/src/Caching/Cache.php na radku 97.

<?php
92 public function load($key, $fallback = NULL)
93 {
94 	$data = $this->storage->read($this->generateKey($key));
95 	if ($data === NULL && $fallback) {
96 		return $this->save($key, function (& $dependencies) use ($fallback) {
97 			return call_user_func_array($fallback, array(& $dependencies));
98		});
99	}
100	return $data;
101 }
?>

ktera se vola z funkce register v ramci RobotLoader, kdyz nastavuji configurator v bootstrap.php

<?php
$configurator->createRobotLoader()
	->addDirectory(__DIR__)
	->addDirectory(__DIR__ . '/../vendor/others/')
	->register();
?>

pres die() jsem si zjistil parametry call_user_func_array, kde to pada

<?php
json_encode( $fallback ) = [{"ignoreDirs":".*, *.old, *.bak, *.tmp, temp","acceptFiles":"*.php, *.php5","autoRebuild":true},"rebuildCallback"]

json_encode( array(& $dependencies) ) = [null]
?>

prava mam nastavene nasledovne (html je root projektu)

<?php
chown -R www-data.www-data html
chmod -R 755 html
chmod -R 777 html/temp html/log
?>

composer update/composer install probehne bez chyb.
chyba je stejna u „minimum-stability“: „stable“ i „minimum-stability“: „dev“ v composer.json
Vyzkousel jsem promazat cache v projektu i v prohlizeci.
Mam povolene veskera chybova hlaseni v php.ini

Mate nekdo napad cim by to mohlo byt a jak dale postupovat? Pres die() uz se bohuzel nejsem schopen dostat dal.

David Matějka
Moderator | 6445
+
0
-

ahoj, mas nastavena prava pro zapis na slozky log a temp?

Myiyk
Člen | 321
+
0
-

Ve složce log by něco mohlo být.

V bootstrapu si můžeš zapnout development mod, a nebude to vyhazovat stránku s chybou 500, ale zobrazí se laděnka. https://tracy.nette.org/cs/#…

ondrejkopicka
Člen | 8
+
0
-

David Matějka napsal(a):

ahoj, mas nastavena prava pro zapis na slozky log a temp?

Jak uz jsem psal v prispevku, nastavoval jsem prava nasledovne:
chown -R www-data.www-data html
chmod -R 755 html
chmod -R 777 html/temp html/log

nyni jsem jeste pridal
chmod -R 777 html
a zkusil jsem i zmenit ownera, nicmene vystup je beze zmeny.

ondrejkopicka
Člen | 8
+
0
-

Myiyk napsal(a):

Ve složce log by něco mohlo být.

V bootstrapu si můžeš zapnout development mod, a nebude to vyhazovat stránku s chybou 500, ale zobrazí se laděnka. https://tracy.nette.org/cs/#…

pracuji na localhostu a je tam defaultni nastaveni. zkusel jsem explicitne do bootstrap.php pridat presne takto
use Tracy\Debugger;
Debugger::enable(Debugger::DEVELOPMENT, __DIR__ . ‚/../log‘);
ale nepomohlo to.

zkusil jsem i upravit
$configurator->setDebugMode(‚debugMode‘);
se stejnym vysledkem

configurator je nastaveny v drivejsi casti jako
$configurator = new \Nette\Config\Configurator;

David Matějka
Moderator | 6445
+
0
-

a je to 500 od nette nebo od apache?

debug mode kdyztak zapnes pres

$configurator->setDebugMode(TRUE);
ondrejkopicka
Člen | 8
+
0
-

David Matějka napsal(a):

a je to 500 od nette nebo od apache?

debug mode kdyztak zapnes pres

$configurator->setDebugMode(TRUE);

upravil jsem v bootstrap.php
$configurator->setDebugMode(TRUE);

a je to 500 od nette nebo od apache?

Jak to zjistim? V chromu dostanu pouze:
This page isn’t working
localhost is currently unable to handle this request.
HTTP ERROR 500
Ve firefoxu prazdna stranka.
access.logg:

<?php
127.0.0.1 - - [16/Jul/2017:16:27:40 +0200] "GET /www/ HTTP/1.1" 500 185 "http://localhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"
127.0.0.1 - - [16/Jul/2017:16:27:47 +0200] "GET /www/ HTTP/1.1" 500 185 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
?>

error.log nic
syslog nic

<?php
Jul 16 16:27:15 ondrejkopicka gnome-session[2202]: [14:27:15][void AbstractOnlineStatus::handleOnlineStatusResult(bool):179] handleOnlineStatusResult no change :  true
Jul 16 16:28:00 ondrejkopicka gnome-session[2202]: [14:28:00][virtual bool OnlineStatus::platformSpecificHasInternetConnectivity():38] org.freedesktop.NetworkManager interface is valid
?>
Oli
Člen | 1215
+
0
-

Takhle vypadá error page nette: https://www.google.cz/search?…:

Pokud vidíš cokoli jiného, tak je špatně nastaven server.

ondrejkopicka
Člen | 8
+
0
-

Oli napsal(a):

Takhle vypadá error page nette: https://www.google.cz/search?…:

Pokud vidíš cokoli jiného, tak je špatně nastaven server.

Jak je potom ale mozne, ze kdyz umistim do toho sameho adresare nette sandbox a nastavim prava uplne stejne, tak ze mi funguje? A kdyz do toho sameho adresare soupnu tu druhou aplikaci a zrekapituluji ty same prikazy (composer update/instal, nastaveni chown a chmod), tak dostanu E500? Kdyby byl problem na serveru, tak bych predpokladal, ze nepojede ani sandbox.

ondrejkopicka
Člen | 8
+
0
-

Zdravim,
chtel bych vam podekovat za snahu a rychle odpovedi. Problem mi nakonec pomohl vyresit jeden clovek osobne.
Jednalo se o sled nekolika veci, ktere problem zpusobovaly:
Bylo mi sdeleno, ze u aplikace nemam spoustet composer update, ale pouze composer install. Diky tomu se zjistilo, ze mi chybi php5.6-gd. Dale bylo nutne povolit a2enmod ssl, rewrite, deflate, include a expires.
Dale nainstalovat nodejs a spustit
npm install -g bower gulp-cli yarn
sudo npm install -g grunt-cli

nakonec bylo nutne do /etc/apache2/sites-enabled-000.default.conf pridat
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

a v aplikaci upravit app/router/RouterFactory.php tak, aby neodkazovalo defaultne na SECURED stranky a v app/config/config.local.neon upravit
parameters: basePath: /www/

pote se aplikace konecne rozebehla.

CZechBoY
Člen | 3608
+
+1
-

Kdybys pustil Requirements Checker tak by ti to asi řeklo, že nemáš PHP GD.