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
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 | 797
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
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
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 | 797
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.
- Ondra Cháb
- Člen | 1
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)
- vladimir.biro
- Člen | 163
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 ;)