Laděnka a ini_set
- AdamSurak
- Člen | 16
Zdravím,
Narazil jsem na problém při deploymentu jednoho webu. Na serveru byl zapnutý safe_mod a vypnuté snad všechny funkce co v PHP jsou. Mezi nimi bohužel ini_set. Projevilo se to tak, že Laděnka nešla nastavit do PRODUCTION módu a v DEVELOPMENT neustále vyhazovala Red screen.
Myslím, že by problém mohl být v Debug.php na řádku 465 (z GITu, v 1.0-dev je to 461), konkrétně:
<?php
// logging configuration
if (self::$productionMode && $logFile !== FALSE) {
self::$logFile = 'log/php_error.log';
if (class_exists(/*Nette\*/'Environment')) {
if (is_string($logFile)) {
self::$logFile = Environment::expand($logFile);
} else try {
self::$logFile = Environment::expand('%logDir%/php_error.log');
} catch (/*\*/InvalidStateException $e) {
}
} elseif (is_string($logFile)) {
self::$logFile = $logFile;
}
//
// TOHLE JE ON
ini_set('error_log', self::$logFile); // TOHLE JE ON
//
//
}
// php configuration
if (function_exists('ini_set')) {
ini_set('display_errors', !self::$productionMode); // or 'stderr'
ini_set('html_errors', !self::$logFile && !self::$consoleMode);
ini_set('log_errors', (bool) self::$logFile);
} elseif (ini_get('log_errors') != (bool) self::$logFile || // intentionally ==
(ini_get('display_errors') != !self::$productionMode && ini_get('display_errors') !== (self::$productionMode ? 'stderr' : 'stdout'))) {
throw new /*\*/LogicException('Function ini_set() must be enabled.');
}
?>
Ověření povolení ini_set se totiž provádí až posléze.
- paranoiq
- Člen | 392
s menšími úpravami funguje v produkčním módu laděnka i bez ini_set(). stačí v Debug::enable() zakomentovat celou sekci s konfigurací a ini_set()
laděnku je pak nutné používat v mailovacím režimu. do logovacího souboru možná něco píše, ale ten je kdo ví kde. soubory s výjimkami a monitor soubor zakládá správně
(hodí se pro takové tragické služby jako třeba Český Hosting)