elitepuzo Posted November 9, 2008 Share Posted November 9, 2008 I am setting up a script on my server and I received some errors claiming "cannot send session cookie - headers already sent" I researched the problem and found it can be caused by white space before the <?php tag or after the ?> tag i removed the spaces but the problem persists. ??? Can someone please help me with this problem i am new to php and would greatly appreciate it BTW here is the exact error messages: A PHP Error was encountered Severity: Warning Message: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/adriatic/public_html/oldfacebook/application/config/config.php:1) Filename: controllers/home.php Line Number: 1 A PHP Error was encountered Severity: Warning Message: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/adriatic/public_html/oldfacebook/application/config/config.php:1) Filename: controllers/home.php Line Number: 1 Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/ Share on other sites More sharing options...
widox Posted November 9, 2008 Share Posted November 9, 2008 It would help if you posted your code. Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-685797 Share on other sites More sharing options...
elitepuzo Posted November 9, 2008 Author Share Posted November 9, 2008 It would help if you posted your code. ok here it is controllers/home.php <?php session_start(); class Home extends Controller { function Intro() { parent::Controller(); } function index() { $this->loadSettings(); $datas = $this->common->authenticate(); global $userId,$now,$rootPath; //declare $userId and $now as global variable $data = array(); if(count($datas)>0) { $data = $datas; $friendsArray = $this->common->getFriends($userId); $data['friends'] = $this->homeFriends($friendsArray); $data['friends_request'] = $this->common->homeFriendsRequest($userId); } else { $datas = $this->common->basicvars(); $data = $datas; } $this->smartyextended->view('home', $data); } ################################################################################################### #Method : homeFriends() #Type : sub #Description : prepares friends list to show one home page ################################################################################################## function homeFriends($friendsArray) { //$this->loadSettings(); $currentPage = base_url(); $mainContent = ''; if(!empty($friendsArray)) { $siteVars = $this->common->getSiteVars(); $listOnHome = $siteVars['listOnHome']; $friendTitle = '<tr> <td bgcolor="#e9e9e9"> <span class="blktxt"><strong>Friends</strong></span></td> </tr>'; for($i=0;$i<count($friendsArray) && $i<$listOnHome;$i++) { //echo getAvatar($friendsArray[$i]); $friendPhoto= $this->common->getAvatar($friendsArray[$i]); $friendName = $this->common->getUsername($friendsArray[$i]); $viewProfile= base_url().'index.php/profile/user/'.$friendsArray[$i]; $viewFriends= base_url().'index.php/friends/view/'.$friendsArray[$i]; $content .= '<tr> <td width="37%" height="65"><div align="left"><a href="'.$viewProfile.'" class="BlueLink"><img src="'.$friendPhoto.'" width="50" border="0" /></a></div></td> <td width="63%" class="BluSubtxt"><strong><a href="'.$viewProfile.'" class="BlueLink">'.ucwords($friendName).'</a></strong><br /> <a href="'.$viewFriends.'" class="BlueLink">View Friends</a></td> </tr>'; } $content = '<tr> <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">'.$content.' </table> </td> </tr>'; $mainContent = '<table width="100%" border="0" cellspacing="4" cellpadding="0">'.$friendTitle.$content.'</table>'; } return $mainContent; }//end getFriends() ################################################################################################### #Method : load_settings() #Type : sub #Description : load all common variables from config and assign to the global variables ################################################################################################## function loadSettings() { global $userId,$now,$mplayer,$mencoder,$rootPath,$adminName,$adminEmail,$siteName,$siteTitle; $this->load->model('common'); $userId = $this->config->item('userId'); $now = $this->config->item('now'); $mencoder = $this->config->item('mencoder'); $mplayer = $this->config->item('mplayer'); $rootPath = $this->config->item('rootPath'); $siteVars = $this->common->getSiteVars(); $adminName = $siteVars['adminName']; $adminEmail = $siteVars['adminEmail']; $siteName = $siteVars['siteName']; $siteTitle = $siteVars['siteTitle']; } } ?> config/config.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /* |-------------------------------------------------------------------------- | Base Site URL |-------------------------------------------------------------------------- | | URL to your Code Igniter root. Typically this will be your base URL, | WITH a trailing slash: | | http://www.your-site.com/ | */ $config['base_url'] = "www.domain.com"; // If uploaded to root //$config['base_url'] = "http://www.domain.ltd/dir/"; // If uploaded to subdirectory /* |-------------------------------------------------------------------------- | Index File |-------------------------------------------------------------------------- | | Typically this will be your index.php file, unless you've renamed it to | something else. If you are using mod_rewrite to remove the page set this | variable so that it is blank. | */ $config['index_page'] = "index.php"; /* |-------------------------------------------------------------------------- | URI PROTOCOL |-------------------------------------------------------------------------- | | This item determines which server global should be used to retrieve the | URI string. The default setting of "AUTO" works for most servers. | If your links do not seem to work, try one of the other delicious flavors: | | 'AUTO' Default - auto detects | 'PATH_INFO' Uses the PATH_INFO | 'QUERY_STRING' Uses the QUERY_STRING | 'REQUEST_URI' Uses the REQUEST_URI | 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO | */ $config['uri_protocol'] = "AUTO"; /* |-------------------------------------------------------------------------- | URL suffix |-------------------------------------------------------------------------- | | This option allows you to add a suffix to all URLs generated by Code Igniter. | For more information please see the user guide: | | http://www.codeigniter.com/user_guide/general/urls.html */ $config['url_suffix'] = ""; /* |-------------------------------------------------------------------------- | Default Language |-------------------------------------------------------------------------- | | This determines which set of language files should be used. Make sure | there is an available translation if you intend to use something other | than english. | */ $config['language'] = "english"; /* |-------------------------------------------------------------------------- | Enable/Disable System Hooks |-------------------------------------------------------------------------- | | If you would like to use the "hooks" feature you must enable it by | setting this variable to TRUE (boolean). See the user guide for details. | */ $config['enable_hooks'] = FALSE; /* |-------------------------------------------------------------------------- | Class Extension Prefix |-------------------------------------------------------------------------- | | This item allows you to set the filename/classname prefix when extending | native libraries. For more information please see the user guide: | | http://www.codeigniter.com/user_guide/general/core_classes.html | http://www.codeigniter.com/user_guide/general/creating_libraries.html | */ $config['subclass_prefix'] = 'MY_'; /* |-------------------------------------------------------------------------- | Allowed URL Characters |-------------------------------------------------------------------------- | | This lets you specify which characters are permitted within your URLs. | When someone tries to submit a URL with disallowed characters they will | get a warning message. | | As a security measure you are STRONGLY encouraged to restrict URLs to | as few characters as possible. By default only these are allowed: a-z 0-9~%.:_- | | Leave blank to allow all characters -- but only if you are insane. | | DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!! | */ $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-'; /* |-------------------------------------------------------------------------- | Enable Query Strings |-------------------------------------------------------------------------- | | By default Code Igniter uses search-engine friendly segment based URLs: | www.your-site.com/who/what/where/ | | You can optionally enable standard query string based URLs: | www.your-site.com?who=me&what=something&where=here | | Options are: TRUE or FALSE (boolean) | | The two other items let you set the query string "words" that will | invoke your controllers and its functions: | www.your-site.com/index.php?c=controller&m=function | | Please note that some of the helpers won't work as expected when | this feature is enabled, since Code Igniter is designed primarily to | use segment based URLs. | */ $config['enable_query_strings'] = FALSE; $config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm'; /* |-------------------------------------------------------------------------- | Error Logging Threshold |-------------------------------------------------------------------------- | | If you have enabled error logging, you can set an error threshold to | determine what gets logged. Threshold options are: | You can enable error logging by setting a threshold over zero. The | threshold determines what gets logged. Threshold options are: | | 0 = Disables logging | 0 = Error logging TURNED OFF | 1 = Error Messages (including PHP errors) | 2 = Debug Messages | 3 = Informational Messages | 4 = All Messages | | For a live site you'll usually only enable Errors (1) to be logged otherwise | your log files will fill up very fast. | */ $config['log_threshold'] = 0; /* |-------------------------------------------------------------------------- | Error Logging Directory Path |-------------------------------------------------------------------------- | | Leave this BLANK unless you would like to set something other than the default | system/logs/ folder. Use a full server path with trailing slash. | */ $config['log_path'] = ''; /* |-------------------------------------------------------------------------- | Date Format for Logs |-------------------------------------------------------------------------- | | Each item that is logged has an associated date. You can use PHP date | codes to set your own date formatting | */ $config['log_date_format'] = 'Y-m-d H:i:s'; /* |-------------------------------------------------------------------------- | Cache Directory Path |-------------------------------------------------------------------------- | | Leave this BLANK unless you would like to set something other than the default | system/cache/ folder. Use a full server path with trailing slash. | */ $config['cache_path'] = ''; /* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | If you use the Encryption class or the Sessions class with encryption | enabled you MUST set an encryption key. See the user guide for info. | */ $config['encryption_key'] = ""; /* |-------------------------------------------------------------------------- | Session Variables |-------------------------------------------------------------------------- | | 'session_cookie_name' = the name you want for the cookie | 'encrypt_sess_cookie' = TRUE/FALSE (boolean). Whether to encrypt the cookie | 'session_expiration' = the number of SECONDS you want the session to last. | by default sessions last 7200 seconds (two hours). Set to zero for no expiration. | */ $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_encrypt_cookie'] = TRUE; $config['sess_use_database'] = FALSE; $config['sess_table_name'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; /* |-------------------------------------------------------------------------- | Cookie Related Variables |-------------------------------------------------------------------------- | | 'cookie_prefix' = Set a prefix if you need to avoid collisions | 'cookie_domain' = Set to .your-domain.com for site-wide cookies | 'cookie_path' = Typically will be a forward slash | */ $config['cookie_prefix'] = ""; $config['cookie_domain'] = ""; $config['cookie_path'] = "/"; /* |-------------------------------------------------------------------------- | Global XSS Filtering |-------------------------------------------------------------------------- | | Determines whether the XSS filter is always active when GET, POST or | COOKIE data is encountered | */ $config['global_xss_filtering'] = FALSE; /* |-------------------------------------------------------------------------- | Output Compression |-------------------------------------------------------------------------- | | Enables Gzip output compression for faster page loads. When enabled, | the output class will test whether your server supports Gzip. | Even if it does, however, not all browsers support compression | so enable only if you are reasonably sure your visitors can handle it. | | VERY IMPORTANT: If you are getting a blank page when compression is enabled it | means you are prematurely outputting something to your browser. It could | even be a line of whitespace at the end of one of your scripts. For | compression to work, nothing can be sent before the output buffer is called | by the output class. Do not "echo" any values with compression enabled. | */ $config['compress_output'] = FALSE; /* |-------------------------------------------------------------------------- | Master Time Reference |-------------------------------------------------------------------------- | | Options are "local" or "gmt". This pref tells the system whether to use | your server's local time as the master "now" reference, or convert it to | GMT. See the "date helper" page of the user guide for information | regarding date handling. | */ $config['time_reference'] = 'local'; /* |-------------------------------------------------------------------------- | Rewrite PHP Short Tags |-------------------------------------------------------------------------- | | If your PHP installation does not have short tag support enabled CI | can rewrite the tags on-the-fly, enabling you to utilize that syntax | in your view files. Options are TRUE or FALSE (boolean) | */ $config['rewrite_short_tags'] = FALSE; /* |-------------------------------------------------------------------------- | Internationalization Views i18n |-------------------------------------------------------------------------- | | Make the English as the default view language | English - en | French - fr */ $config['lang_code'] = "en"; $config['TBL_USERS'] = "users"; ?> Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-685798 Share on other sites More sharing options...
blueman378 Posted November 9, 2008 Share Posted November 9, 2008 you need to remove all new lines in your config file or set your headers before you include it. Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-685903 Share on other sites More sharing options...
DeanWhitehouse Posted November 9, 2008 Share Posted November 9, 2008 Now don't get me wrong but i have a suspicion that you didn't code this, and it is likely you don't know how to fix the error even though it has been explained to you. Please look before posting It is clearly stated HEADER Errors , please read before posting. http://www.phpfreaks.com/forums/index.php/board,1.0.html http://www.phpfreaks.com/forums/index.php/topic,37442.0.html Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-685940 Share on other sites More sharing options...
elitepuzo Posted November 13, 2008 Author Share Posted November 13, 2008 Now don't get me wrong but i have a suspicion that you didn't code this, and it is likely you don't know how to fix the error even though it has been explained to you. Please look before posting It is clearly stated HEADER Errors , please read before posting. http://www.phpfreaks.com/forums/index.php/board,1.0.html http://www.phpfreaks.com/forums/index.php/topic,37442.0.html Yes, you are correct i did not code this but it is a script i am trying to install from kootali to create a social networking site. I am new to PHP so I am having trouble with it. I read the HEADER errors post that i should have read before posting. I then attempted the different methods stated there and it still doesn't work. ??? Currently I modified the code for numerous includes: if(!headers_sent()){session_start} else {} Now the errors don't show but now when I login in it shows a blank page? It seems as if that is a temporary solution but does not FIX the problem. As stated in the HEADERS error post The following information should help you resolve your "headers already sent" warning messages: Check that there's no characters (output) before a starting PHP tag <?PHP Check that there's no characters (output) after an ending PHP tag ?> Check the above in any include/require files you're using in your scripts, and of course make sure they're not echoing something first I am now wondering if there can be any hidden characters that dont show in notepad, before the starting PHP tag or after the ending PHP tag. If anyone knows to explain to me why this is happening and post a solution i would greatly appreciate it. Ask if you need any further code or information from me. Thanks in advance Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-689398 Share on other sites More sharing options...
PFMaBiSmAd Posted November 13, 2008 Share Posted November 13, 2008 That sticky is nice and verbose about the first most common reason (outputting content/white-space) before the header, but it does not mention the second most common reason that would cause there to be output on line one of a file - a file saved using UTF-8 encoding and the BOM (Byte Order Mark) characters are the start of the file are content before the <?php tag. Check if your file is saved as UTF-8 and if it is, save it as ANSI/ASCII. Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-689576 Share on other sites More sharing options...
Mchl Posted November 13, 2008 Share Posted November 13, 2008 Check if your file is saved as UTF-8 and if it is, save it as ANSI/ASCII. Or UTF-8 without BOM Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-689579 Share on other sites More sharing options...
PFMaBiSmAd Posted November 13, 2008 Share Posted November 13, 2008 When you have typed the same answer to a commonly occurring problem twenty to thirty times, you tend to leave out the details. Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-689599 Share on other sites More sharing options...
Mchl Posted November 13, 2008 Share Posted November 13, 2008 Yeah I know... worked in tech support once. BTW: I spent several hours trying to figure out how these three bytes are appearing at the beginning of my files... Windows Notepad FAIL Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-689601 Share on other sites More sharing options...
blueman378 Posted November 14, 2008 Share Posted November 14, 2008 If you attach your files we can look through and see where it is going wrong. Otherwise we cant help. Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-689884 Share on other sites More sharing options...
Recreational_Champ Posted November 14, 2008 Share Posted November 14, 2008 what about: ob_start() //code ob_flush() Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-689915 Share on other sites More sharing options...
blueman378 Posted November 14, 2008 Share Posted November 14, 2008 what about: ob_start() //code ob_flush() not exactly good practise... Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-690028 Share on other sites More sharing options...
elitepuzo Posted November 15, 2008 Author Share Posted November 15, 2008 That sticky is nice and verbose about the first most common reason (outputting content/white-space) before the header, but it does not mention the second most common reason that would cause there to be output on line one of a file - a file saved using UTF-8 encoding and the BOM (Byte Order Mark) characters are the start of the file are content before the <?php tag. Check if your file is saved as UTF-8 and if it is, save it as ANSI/ASCII. Thank you very much, that was exactly the problem! I greatly appreciate your help btw it would help others to add that advice to the headers error sticky Thanks again Quote Link to comment https://forums.phpfreaks.com/topic/131981-solved-headers-sent-error/#findComment-690884 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.