Varování „PHP Warning: Missing cache storage.“

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

Po upgrade na 2.0 alpha se mi neustále v debug liště objevuje hláška
„PHP Warning: Missing cache storage.“
Nikdy jsem nic takového u staré verze nenastavoval … nějaký hint, kde to hledat?
Díky
JN

jannemec
Člen | 78
+
0
-

ještě doplním PHP 5.2.13, IIS7 na Windows 7, nette „Nette Framework 2.0-alpha pro PHP 5.2 bez prefixů“

Jan Tvrdík
Nette guru | 2595
+
0
-

Tak se koukni na soubor a řádek, kde k té chybě dochází, ne?

jannemec
Člen | 78
+
0
-

Jan Tvrdík napsal(a):

Tak se koukni na soubor a řádek, kde k té chybě dochází, ne?

Tak to mě napadlo, jenže je to v nette
Nette/Loaders/RobotLoader.php řádek 355

<?php
		if (!$this->cacheStorage) {
			trigger_error('Missing cache storage.', E_USER_WARNING);
			$this->cacheStorage = new DummyStorage;
		}
		return new Cache($this->cacheStorage, 'Nette.RobotLoader');
?>

a neuvědomuji si, že bych $cacheStorage někdy nastavoval a nenašel jsem to ani v changelogu …
JN

Jan Tvrdík
Nette guru | 2595
+
0
-

Pravděpodobně za to může tento commit:
https://github.com/…858527105f2e

Řešením je buď konfigurovat RobotLoader v config.ini nebo zavolat ručně metodu setCacheStorage.

jannemec
Člen | 78
+
0
-

Tak změna – nakonec jsem zjistil, že v bootstrap.php ještě zůstalo

<?php
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();
?>

A to vytvořilo onen nový RobotLoader s chybou …

V každém případě díky.
JN

xspider
Člen | 12
+
0
-

Mám úplně stejný problém, ale nějak jsem nepochopi lajk jste jej vyřešili? Používám php 5.3 a také mám v bootstrap.php

<?php
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();
?>

a také mi to hazí tu hlášku „PHP Warning: Missing cache storage.“ ale nechapu co je špatně? Z vaší reakce jsem pochopil že tam loader nema být, ale když jsem ho smazal tak to nenačte třídy a když ho tam nechám tak to vyhazuje tu chybu. Tak jak jste to vyřešil? Díky

HanziQ
Člen | 16
+
0
-

Buď musíš přidat volání

<?php
$loader->setCacheStorage(Environment::getService('Nette\\Caching\\ICacheStorage'));
//nebo jiné storage samozřejmě
?>

před registraci loaderu, nebo konfigurovat RobotLoader v config.ini, tj.

service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE

Editoval HanziQ (14. 11. 2010 18:34)

xspider
Člen | 12
+
0
-

Díky moc to bylo co jsem hledal!

bojovyletoun
Člen | 667
+
0
-

proč místo new Robotloder nezavoláte Environment::getRobotLoader()?