Class ‚BasePresenter‘ not found
- Santas
- Člen | 11
Ahoj,
skript mi padá na:
Class 'BasePresenter' not found
Skúšal som:
- mazať temp, chmod 777 má nastavený
- updatovať na najnovšiu verziu Nette pre PHP 5.3
- bootstrap obsahuje
Environment::loadConfig();
- code-checker nehlási na /app ani /document_root žiadne chyby
- requirements checker tiež hlási, že je všetko OK a safe mode je vypnutý
- strict mode tiež nič nehlási
- na localhoste PHP 5.3.3 beží OK, na servery PHP 5.3.3 to padá na nenájdení BasePresenteru
- config.ini obsahuje zapnutie RobotLoaderu
service.Nette-Loaders-RobotLoader.factory = Nette\Configurator::createRobotLoader
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE
DefaultPresenter.php
namespace FrontModule;
class DefaultPresenter extends \BasePresenter
{
BasePresenter.php
<?php
use Nette\Environment;
use Nette\Application\Presenter;
use Nette\Application\AppForm;
use Nette\Forms\Form;
use Nette\Security\AuthenticationException;
abstract class BasePresenter extends Nette\Application\Presenter
{
Editoval Santas (19. 5. 2011 16:11)
- nanuqcz
- Člen | 822
Ahoj, a nemáš to zapnutí RobotLoaderu v configu jen pro
[development]
mod?
Kdyžtak, zkus si vypsat třídy, které RobotLoader načetl, jestli tam bude i BasePresenter:
var_dump( \Nette\Environment::getService('Nette\\Loaders\\RobotLoader')->getIndexedClasses() );
- nanuqcz
- Člen | 822
Mě to vrátí
array(99) {
["BasePresenter"]=>
string(92) "/mnt/data/accounts/w/.../app/presenters/BasePresenter.php"
["GalleriesPresenter"]=>
string(97) "/mnt/data/accounts/w/.../app/presenters/GalleriesPresenter.php"
["ErrorPresenter"]=>
string(93) "/mnt/data/accounts/w/.../app/presenters/ErrorPresenter.php"
...
takže bych tipoval, že se ti RobotLoader vůbec neaktivuje.
Btw, kam jsi ten kód
var_dump( \Nette\Environment::getService('Nette\\Loaders\\RobotLoader')->getIndexedClasses() );
přesně dal? (jen se chci ujistit, že není někde na začátku bootstrapu,
kde ještě RobotLoader neměl šanci prohledat adresáře)
EDIT: Poslední odstavec ignoruj, nalezené třídy se mi vypíšou ať ten kód dám kamkoliv. Takže mě napadá už fakt jen ten config.ini, můžeš ho tu vypsat celý?
Editoval xxxObiWan (19. 5. 2011 17:40)
- Santas
- Člen | 11
config.ini
[common]
; PHP configuration
php.date.timezone = "Europe/Prague"
; variables
variable.tempDir = %appDir%/temp
variable.logDir = %appDir%/log
; services
service.Nette-Loaders-RobotLoader.factory = Nette\Configurator::createRobotLoader
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE
service.Nette-Security-IAuthenticator = Security_Authenticator
service.Nette-Security-IAuthorizator = Security_Acl
security.salt = ********
[common.database]
*****
[production < common]
[development < common]
bootstrap.php bez zbytocnych komentarov
<?php
use Nette\Debug;
use Nette\Environment;
use Nette\Application\Route;
use Nette\Application\SimpleRouter;
require LIBS_DIR . '/Nette/loader.php';
require LIBS_DIR . '/dibi/dibi.php';
Debug::$strictMode = true;
Debug::enable(Debug::DEVELOPMENT);
Environment::loadConfig();
$application = Environment::getApplication();
dibi::connect(Environment::getConfig('database'));
$router = $application->getRouter();
if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {
$router[] = new Route('index.php', array(
'module' => 'Front',
'presenter' => 'Default',
), Route::ONE_WAY);
$router[] = new Route('admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('',array(
'presenter' => 'Front:Default',
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Front:Default',
'action' => 'default',
'id' => NULL,
));
} else {
$router[] = new SimpleRouter('Front:Default:default');
}
var_dump( \Nette\Environment::getService('Nette\\Loaders\\RobotLoader')->getIndexedClasses() );
$application->run();