File ‚%appDir%/config.ini‘ is missing or is not readable

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

Ahoj ve spolek.
Stáhnul jsem Nette 2.0a a zkusil si na hostingu udělat sandbox. Checker mi to projel, že jako vše ok (až na MagicImg, ale to nepotřebuju). Na lokále se mi zobrazí standart Homepage:default, ale na hostingu mi to vyhodí File '%appDir%/config.ini' is missing or is not readable. při pokusu `Environment::loadConfig();
` v bootstrapu.
V laděnce v sekci Environment jsou cesty vypsaný správně, tak nevím, kde by mohl být pohřbený pes.
Webhosting jsem použil endora.cz … Asi to není ideální hosting, ale je to zadarmo, tak na sandbox to musí stačit :)

Rampa
Člen | 65
+
0
-

Tak se v tom hrabu už druhý den a nejedeto…
Chyba bude asi v překladu %appDir%. Kde se vubec bere tato proměná? Hledal jsem ve zdrojáku, ale nikde jsem definici nenašel, jen její použití v config.ini a Configurator.php. V Nete 0.9 se to definovalo jako promená Envitonmentu, ale v 2.0 už to tam není a když si dám Debug::bardump(Environment::getVariables()), tak je to prázdný :(

net-vor
Člen | 35
+
0
-

Konstanta APP_DIR se definuje v souboru index.php v adresáři document_root, odtud se bere. Problém by podle mě mohl být v tom, že na hostingu budou jinak nastavené cesty k document_rootu, než máš na localhostu. Tohle někdy může být trochu utrpení, ale zkusil bych zakverdlovat s nastavením v index.php, případně si nechat vypsat, jaké adresáře se vlastně pod těmi konstantami skrývají, to by mohlo leccos odhalit.

Jinak free hosting bych rychle opustil, je to sice zadarmo, ale k čemu to je, když je to bastl, mají to blbě nastavené a nic tam neběhá…

Editoval net-vor (15. 11. 2010 19:21)

Rampa
Člen | 65
+
0
-

O konstantě APP_DIR vím, kde se tvoří a ta je v pořádku, ale Nette využívá svojí proměnou appDir z Envirnmentu a tu jsem nenašel kde se iniciailizuje… :(

Tak po dalším bádání jsem zjistil, že mi nefunguje funkce z Environmentu:

<?php
	public static function expand($var)
	{
		static $livelock;

		if (is_string($var) && strpos($var, '%') !== FALSE) {
			return @preg_replace_callback(
				'#%([a-z0-9_-]*)%#i',
				function ($m) use (& $livelock) {
					list(, $var) = $m;
					if ($var === '') return '%';

					if (isset($livelock[$var])) {
						throw new \InvalidStateException("Circular reference detected for variables: "
							. implode(', ', array_keys($livelock)) . ".");
					}

					try {
						$livelock[$var] = TRUE;
						$val = Environment::getVariable($var);
						unset($livelock[$var]);
					} catch (\Exception $e) {
						$livelock = array();
						throw $e;
					}

					if (!is_scalar($val)) {
						throw new 	\InvalidStateException("Environment variable '$var' is not scalar.");
					}
					return $val;
				},$var); // intentionally @ due PHP bug #39257
		}
		return $var;
	}
?>

preg_replace_callback vůbec neproběhne a místo stringu s nahrazenou proměnou mi to vrátí zpět původní string. Pokud vyhodím shut up zavináč, tak to hodí chybu Parametr 2 is not fuction. A PHP tam je 5.3.3

Editoval Rampa (16. 11. 2010 8:00)

Mikulas Dite
Člen | 756
+
0
-

Jestli se nepletu, tak pokud dáš pryč ten zavináč, dává to chybu s closure != callback. Taky mi tohle na jednom hostingu nějak nefungovalo, ale přešel jsem jinam, takže jsem to neřešil.

Rampa
Člen | 65
+
0
-

Přesněji řečeno, hází to warning preg_replace_callback(): Requires argument 2, '', to be a valid callback

=========================================================================================
** VYŘEŠENO **
=========================================================================================

Takže zakopaná sabáka (neboli hund) je v eAcceleratoru.
Stačí dát do .htaccess:
php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0

Tak kdyby s tím někdo zápasil, tak jsem mu snad ušetřil čas :-)

Editoval Rampa (16. 11. 2010 10:18)

Tomato
Člen | 9
+
0
-

diky moc! prave toto mi pomohlo! :)