ispconfig – nette 3.0 apache hází err 500 i při nově vytvořeném projektu s právy problém není

Altimit
Člen | 82
+
-1
-

Ahoj, mám aktuálně problém..
Chtěl jsem aktualizovat nette na nejnovější verzi a web přestal kompletně fungovat. Když jsem hledal a zkusil jsem nahodit úplně čisté nette na nově vytvořený folder přes ispconfig tak mně to vyhodilo s errorem 500 (ne od nette, ale od apache) a v logu isp mám tohle:

[Mon Apr 29 14:02:55.957319 2019] [fcgid:warn] [pid 14167] [client *] mod_fcgid: stderr: PHP Fatal error:  Uncaught Error: Class 'App\\Bootstrap' not found in /var/www/clients/client0/web9/web/www/index.php:7
[Mon Apr 29 14:02:55.957348 2019] [fcgid:warn] [pid 14167] [client *] mod_fcgid: stderr: Stack trace:
[Mon Apr 29 14:02:55.957353 2019] [fcgid:warn] [pid 14167] [client *] mod_fcgid: stderr: #0 {main}
[Mon Apr 29 14:02:55.957358 2019] [fcgid:warn] [pid 14167] [client*] mod_fcgid: stderr:   thrown in /var/www/clients/client0/web9/web/www/index.php on line 7

php mám na verzi 7.3.2

PHP 7.3.2-3 (cli) (built: Feb  8 2019 15:05:54) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.2-3, Copyright (c) 1999-2018, by Zend Technologies

nevíte kde může být chyba?
jiný web na starší verzi nette funguje, ale na 3.0 nějak ne..

Mysteria
Člen | 788
+
+1
-

Přečetl sis vůbec tu chybu? Hláška Class 'App\\Bootstrap' not found je totiž poměrně jasná.

Nedávno se měnil bootstrap Nette a už to není jenom soubor, ale je to nově třída. Pokud jsi třeba aktualizoval jenom index.php, ale ne bootstrap.php, tak by ti tohle mohlo vzniknout.

Altimit
Člen | 82
+
0
-

@Mysteria zkusil jsem nahodit úplně čisté nette na nově vytvořený folder přes ispconfig tak mně to vyhodilo ten error byl ten samý jako když jsem to aktualizoval. btw. tu chybu mi vyskočila právě u nově čisté nahozené verze. Tudíž to není chyba v aktualizaci.

Mysteria
Člen | 788
+
0
-

V tom případě sem dej obsah souboru app/Bootstrap.php a composer.json.

tkn
Člen | 12
+
-1
-

Nemělo by být v index.php tohle:

App\Booting

? Ty tam máš

App\Bootstrap
Altimit
Člen | 82
+
0
-

je to přesně jak to je po stažení tak to bylo rozbalené a nahrané na server a přidělené oprávnění pro čtení
index.php

<?php

declare(strict_types=1);

require __DIR__ . '/../vendor/autoload.php';

App\Bootstrap::boot()
	->createContainer()
	->getByType(Nette\Application\Application::class)
	->run();

app/bootstrap.php

<?php

declare(strict_types=1);

namespace App;

use Nette\Configurator;


class Bootstrap
{
	public static function boot(): Configurator
	{
		$configurator = new Configurator;

		//$configurator->setDebugMode('23.75.345.200'); // enable for your remote IP
		$configurator->enableTracy(__DIR__ . '/../log');

		$configurator->setTimeZone('Europe/Prague');
		$configurator->setTempDirectory(__DIR__ . '/../temp');

		$configurator->createRobotLoader()
			->addDirectory(__DIR__)
			->register();

		$configurator->addConfig(__DIR__ . '/config/common.neon');
		$configurator->addConfig(__DIR__ . '/config/local.neon');

		return $configurator;
	}
}

composer.json

 {
	"name": "nette/web-project",
	"description": "Nette: Standard Web Project",
	"keywords": ["nette"],
	"type": "project",
	"license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
	"require": {
		"php": ">= 7.1",
		"nette/application": "^3.0",
		"nette/bootstrap": "^3.0",
		"nette/caching": "^3.0",
		"nette/database": "^3.0",
		"nette/di": "^3.0",
		"nette/finder": "^2.5",
		"nette/forms": "^3.0",
		"nette/http": "^3.0",
		"nette/mail": "^3.0",
		"nette/robot-loader": "^3.0",
		"nette/security": "^3.0",
		"nette/utils": "^3.0",
		"latte/latte": "^2.5",
		"tracy/tracy": "^2.6"
	},
	"require-dev": {
		"nette/tester": "^2.0"
	},
	"autoload": {
		"classmap": ["app/Bootstrap.php"]
	},
	"minimum-stability": "stable",
	"config": {
		"platform": {
			"php": "7.1"
		}
	}
}
tomat
Člen | 16
+
-1
-

Já mám pro inspiraci v Nette 3:

index.php

<?php

declare(strict_types=1);

require __DIR__ . '/../vendor/autoload.php';

App\Booting::boot()
	->createContainer()
	->getByType(Nette\Application\Application::class)
	->run();

app/Booting.php – místo Bootstrap.php

<?php

declare(strict_types=1);

namespace App;

use Nette\Configurator;


class Booting
{
	public static function boot(): Configurator
	{
		$configurator = new Configurator;

		//$configurator->setDebugMode('23.75.345.200'); // enable for your remote IP
		$configurator->enableTracy(__DIR__ . '/../log');

		$configurator->setTimeZone('Europe/Prague');
		$configurator->setTempDirectory(__DIR__ . '/../temp');

		$configurator->createRobotLoader()
			->addDirectory(__DIR__)
			->register();

		$configurator
			->addConfig(__DIR__ . '/config/common.neon')
			->addConfig(__DIR__ . '/config/local.neon');

		$configurator->addParameters([
			                             'rootDir' => realpath(__DIR__ . '/..'),
			                             'appDir' => __DIR__,
			                             'wwwDir' => realpath(__DIR__ . '/../www'),
		                             ]);

		return $configurator;
	}


	public static function bootForTests(): Configurator
	{
		$configurator = self::boot();
		\Tester\Environment::setup();
		return $configurator;
	}
}

Porovnej a otestuj @Altimit. Mělo by fungovat, taky jsem na to ze začátku chvíli koukal ;-)

Editoval tomat (29. 4. 2019 18:29)

Mysteria
Člen | 788
+
+1
-

Tak jsem to naschvál taky vyzkoušel a normálně funguje (obsah souborů je stejný jako tvůj výše uvedený). Zkus tu čistou instalaci provést takhle:

composer create-project nette/web-project:dev-master some/directory

U tebe to vypadá jako kdyby se nevygeneroval správně autoloading.

Šaman
Člen | 2528
+
0
-

Zkusil jsem stáhnout tu zazipovanou verzi a dělá to totéž. Je to nějaký hapr v composer mapováni. Stačí dát composer install, nic nového se nestáhne, ale ta classmap se přegeneruje správně.

Ondra Cháb
Člen | 1
+
0
-

Dnes jsem řešil stejný problém, na localu fungovalo vše, na hostingu ne. Chyba byla v tom, že autoloader hledal Bootstrap v app/ s malým a, i když všude jinde jsem měl App/.

Editoval Ondra Cháb (1. 8. 2019 7:19)

Mysteria
Člen | 788
+
0
-

Jn, Windowsu jiná velikost písmen nevadí, ale Linuxu ano, proto se ti to projevilo až na hostingu.

Karlito
Člen | 18
+
+2
-

Pro budoucí čtenáře je klíčové kromě úpravy
www/index.php
a
App/Bootstrap.php
i samotný composer, kde se nastaví, jaký loader použít

	"autoload": {
		"classmap": ["app/Bootstrap.php"]
	},

Nezapomenout po úpravě composeru zavolat composer update

vladimir.biro
Člen | 136
+
0
-

Karlito napsal(a):

Pro budoucí čtenáře je klíčové kromě úpravy
www/index.php
a
App/Bootstrap.php
i samotný composer, kde se nastaví, jaký loader použít

	"autoload": {
		"classmap": ["app/Bootstrap.php"]
	},

Nezapomenout po úpravě composeru zavolat composer update

Prave si mi zachranil moje dusevne zdravie ;)