Cannot send session cache limiter – headers already sent
- Firest
- Člen | 12
Zdravím,
vím, že obdobná témata už tu byly, bohužel však už několik dní
řeším problém, který nejsem schopen vyřešit.
Mám šablonu @layout.latte:
<?php
$nastaveni = \Nette\Environment::getSession('nastaveni');
$profil = \Nette\Environment::getUser()->id;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="">
<title>{block title|striptags}Administrace{/block}</title>
<link rel="stylesheet" media="screen,projection,tv" href="{$basePath}/css/screen.css">
<link rel="stylesheet" href="{$basePath}/css/menu.css">
<link rel="stylesheet" href="{$basePath}/css/paginator.css">
<link rel="stylesheet" href="{$basePath}/css/sdmenu.css" />
<link rel="stylesheet" href="{$basePath}/css/jquery.datetimepicker.css" />
<link rel="stylesheet" href="{$basePath}/css/colorpicker.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="{$basePath}/css/component.css" />
<style>
a { color:#{$nastaveni->Barva} }
.paginator a { color: #{$nastaveni->Barva} }
.paginator .current { background:#{$nastaveni->Barva} }
div.sdmenu div a { color: #{$nastaveni->Barva} }
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current{
background: #{$nastaveni->Barva} ;
}
.no-touch .cbp-tm-submenu > li > a:hover,
.no-touch .cbp-tm-submenu > li > a:active {
background: #{$nastaveni->Barva} ;
}
.cbp-tm-menu > li > a {
color: #{$nastaveni->Barva};
}
.no-touch .cbp-tm-menu > li > a:hover,
.no-touch .cbp-tm-menu > li > a:active {
color: #{$nastaveni->Barva};
}
</style>
</head>
<body>
<script> document.documentElement.className+=' js' </script>
{if $user->isLoggedIn()}
<div id="panel">
<div id="logo">
<a n:href="Dashboard: "><img src="{$basePath}/images/logo.png" title="Net-service administrace" height="58" width="208"></a>
</div>
<div id="user">
<ul id="cbp-tm-menu" class="cbp-tm-menu">
<li>
<a href="#">{$user->getIdentity()->jmeno} {$user->getIdentity()->prijmeni}</a>
<ul class="cbp-tm-submenu">
{if $user->getIdentity()->role == "admin"}
<li><a n:href="Admin:edit $profil">Upravit</a></li>
<li><a n:href="Settings:">Nastavení</a></li>
{/if}
<li><a n:href="signOut!">Odhlásit se</a></li>
</ul>
</li>
</ul>
<span class="username"><b>Uživatel:</b></span>
</div>
</div>
<div id="content">
<div id="menu">
<div id="menu-content" class="sdmenu" >
<div>
<span>Nástěnka</span>
<a n:href="Dashboard:">Zobrazit nástěnku</a>
</div>
<div class="collapsed">
<span>Klienti</span>
<a n:href="Client:">Zobrazit klienty</a>
<a n:href="Client:add">Nový klient</a>
</div>
{if $user->getIdentity()->role == "admin"}
<div class="collapsed">
<span>Admini</span>
<a n:href="Admin:">Zobrazit adminy</a>
<a n:href="Admin:add">Nový admin</a>
</div>
<div class="collapsed">
<span>Způsoby kontaktu</span>
<a n:href="ContactWay:">Zobrazit způsoby</a>
<a n:href="ContactWay:add">Nový způsob</a>
</div>
<div class="collapsed">
<span>Produkty</span>
<a n:href="Product:">Zobrazit produkty</a>
<a n:href="Product:add">Nový produkt</a>
</div>
<div class="collapsed">
<span>Lokalizace</span>
<a n:href="Localization:">Zobrazit lokalizace</a>
<a n:href="Localization:add">Nová lokalizace</a>
</div>
<div class="collapsed">
<span>Stavy</span>
<a n:href="State:">Zobrazit stavy</a>
<a n:href="State:add">Nový stav</a>
</div>
{/if}
</div>
</div>
<div id="main">
{include #content}
</div>
</div>
{else}
<div n:foreach="$flashes as $flash" class="flash {$flash->type}">{$flash->message}</div>
{include #content}
{/if}
{block scripts}
<script src="{$basePath}/js/jquery.js"></script>
<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/main.js"></script>
<script src="{$basePath}/js/sdmenu.js"></script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="{$basePath}/js/jquery.datetimepicker.js" ></script>
<script src="{$basePath}/js/ckeditor.js"></script>
<script src="{$basePath}/js/colorpicker.js"></script>
<script src="{$basePath}/js/eye.js"></script>
<script src="{$basePath}/js/utils.js"></script>
<script src="{$basePath}/js/layout.js?ver=1.0.2"></script>
<script src="{$basePath}/js/modernizr.custom.js"></script>
<script src="{$basePath}/js/cbpTooltipMenu.min.js"></script>
<script type="text/javascript" >
var myMenu;
window.onload = function() {
myMenu = new SDMenu("menu-content");
myMenu.init();
};
$('.datetimepicker_mask').datetimepicker({
mask:'9999-19-39 29:59',
});
$('.datetimepicker').datetimepicker();
$('.cp').ColorPicker({
onSubmit: function(hsb, hex, rgb, el) {
$(el).val(hex);
$(el).ColorPickerHide();
},
onBeforeShow: function () {
$(this).ColorPickerSetColor(this.value);
}
})
.bind('keyup', function(){
$(this).ColorPickerSetColor(this.value);
});
document.getElementById('content').style.height=document.getElementById('main').offsetHeight+"px";
document.getElementById('menu').style.height=document.getElementById('main').offsetHeight+"px";
var menu = new cbpTooltipMenu( document.getElementById( 'cbp-tm-menu' ) );
</script>
{/block}
</body>
</html>
Na localhostu mi vše jede v pořádku, když však šablonu nakopíruji na produkční server, Laděnka mi vypíše chybu session_start(): Cannot send session cache limiter – headers already sent (output started at /data/domena/www_data/subdomena/temp/cache/_Nette.FileTemplate/_templates._layout.latte-7c189325a9ea8b0aed961f683146572b.php:84). Jakmile ale odmažu nefungující část kódu (tj. části stylu kde se nachází makro {$nastaveni->Barva} ), přihlásím se a kód opět vrátím, funguje mi kód bez problémů (chybová hláška se tedy zobrazuje jen těm, co se ke stránkám přihlašují poprvé). Neví někdo, jak tento problém vyřešit? Zkoušel jsem mazat cache i nahrát zálohu z doby, kdy vše fungovalo bez problému, ale neúspěšně. Předem díky
Editoval Firest (28. 12. 2013 18:00)