Error 500 při setDebugMode(false), při true to funguje

Artur_PN
Člen | 1
+
0
-

Ahojte,
na začátku se omlouvám za jazykové chyby. ;)

Napsal jsem malou aplikací v Nette, která fungovala perfektně. Teď jsem udělal druhou verze – změnil jsem pouze nějaké latte šablony a pár JS a CSS souborů. Veškeré presentery, configi atd. zůstaly stejné. Mám to rozdílený na FrontModule a AdminModule, ale…

… stará verze funguje se správným setDebugMode (to je: false – na serveru), ale nová – už ne. Pokud nastavím setDebugMode(true), tak jede; pokud mám setDebugMode(false), tak mi vyhodí Server Error 500 a do logu uloží:

Nette\Application\InvalidPresenterException: Cannot load presenter 'Error', class 'ErrorPresenter' was not found. in (...)/public_html/(...)/vendor/nette/application/src/Application/PresenterFactory.php:71  @  http://(...)/www/  @@  exception--2020-08-18--16-25--812bab1380.html

Ano, cache v temp/cache jsem chtěl vyčistit, ale zatím se nic v ní neuložilo – je prázdna. Chmod je v pořádku. Error Presentery vůbec jsem needitoval. Myslel jsem, že problém je s routováním, ale v té první verze fungovaly stejné routy v setDebugMode(false). Nastavení setDebugMode(false) na localhostu – funguje. Já už nemám nápad, co je špatně.

Souhrn:

  • setDebugMode(false) na localhostu: stránka funguje,
  • setDebugMode(false) na serveru: ukazuje Error 500,
  • setDebugMode(true) na serveru: stránka funguje,
  • temp/cache čisté.

Dodatečné informace:

config.neon

parameters:


application:
	errorPresenter: Error
	mapping:
		Front: FrontModule\*Presenter
		Admin: AdminModule\*Presenter


session:
	expiration: 14 days


services:
	router: App\Router\RouterFactory::createRouter
	- App\Model\DatabaseModel
	- App\Model\Authenticator
	authenticator: {class: App\Model\Authenticator, autowired: false}

database:
    dsn: 'mysql:host=localhost;dbname=...'
    user: ...
    password: ...

RouterFactory.php

<?php

namespace App\Router;

use Nette;
use Nette\Application\Routers\Route;
use Nette\Application\Routers\RouteList;


final class RouterFactory
{
	use Nette\StaticClass;

	/**
	 * @return Nette\Application\IRouter
	 */

	/*EX*/
	public static function createRouter()
	{
		$router = new RouteList;

		$admin = new RouteList('Admin');
		$admin[] = new Route('admin/<presenter>/<action>[/<id>]', 'Overview:default');

		$front = new RouteList('Front');
		$front[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

		$router[] = $admin;
		$router[] = $front;

		$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

		return $router;
	}
	/*EX-END*/
}

Structure:

project
-app
 --model
 --modules
  ---AdminModule
  ---FrontModule
   ----templates
    -----Error
    -----Homepage
    -----...
   ----HomepagePresenter.php
   ----ErrorPresenter.php
   ----...
  ---router
  ---...

Editoval Artur_PN (18. 8. 2020 18:47)

David Grudl
Nette Core | 8080
+
+2
-

errorPresenter: Front:Error