FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » cron job and headers sent error
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: cron job and headers sent error [message #182771 is a reply to message #182769] Sun, 08 September 2013 20:30 Go to previous messageGo to previous message
J.O. Aho is currently offline  J.O. Aho
Messages: 194
Registered: September 2010
Karma:
Senior Member
On 08/09/13 17:35, Richard Yates wrote:
> On Sun, 08 Sep 2013 16:40:30 +0200, "J.O. Aho" <user(at)example(dot)net>
> wrote:
>
>> On 08/09/13 15:36, Richard Yates wrote:
>>> I have a script that runs automatically every night that shortens some
>>> tables. It has been working fine (Actually still is doing what it is
>>> supposed to). However I started getting an email warning notice when
>>> it runs. In says headers have already been sent in line two of the
>>> database Connection script that is included. I cannot figure out how
>>> anything is being sent. The connection script does not output
>>> anything. Line 2 identifies whether the script is running on the local
>>> or production server. Any ideas where the error is coming from? Here
>>> are the warning message, the cron script and the included connection
>>> script:
>>>
>>> -------- warning notice
>>>
>>> <b>Warning</b>: session_start() [<a
>>> href='function.session-start'>function.session-start</a>]: Cannot send
>>> session cookie - headers already sent in
>>> <b>/home/twpalygj/public_html/Connections/gleanslo.php</b> on line
>>> <b>2</b><br />
>>
>> This is a warning you usually get when you have white spaces or bom
>> sequence in your files. Check all your files that are used, that they do
>> not have anything before or after the PHP tages (<?php and ?>).
>
> Thanks. I will check again for spaces. What is 'bom sequence'?

I think Peter made a really good explanation, so I won't repeat it here.


>> As you are anyway running a cron job, why do you call it over tcp/ip?
>
> I don't know what you mean by calling it over tcp/ip. It is set up via
> cPanel and runs automatically on the domain host server.

Your error message contains HTML and uses session_start(), which are
something you will not use if you run the script properly as a cron job,
those I guess you made a HTTP/HTTPS request to the script in question.


>> I would recommend you to rewrite the cron job to just connect to the
>> database and do it's job,
>
> Do you mean putting the connection script directly into the cron
> script rather than using an includes()?

I mean it to use script which is just made for CLI which do not relay on
session_start() as it's not used in CLI. Sure you can use includes, but
see to only include configuration for the database, not scripts relaying
on web requests.


>> do have error handling in the script which
>> gives you proper explanations why something goes wrong if something does
>> that.
>
> The folder on the production server is outside of the 'public_html'
> root folder so I cannot dorectly run it in my browser. I have to test
> it inside another folder on my local server.

Rule number one, set up a test environment which is similar to your
production environment, those you will see that the scripts will work
when you move it from your test environment to production environment.

Today there is VirtualBox which can work really well to test things,
just remember to only have those packages installed in the test
environment as you have in live.


>> A good thing is also log to syslog so you can see the job has been
>> properly done and you can also forward that to splunk or similar.
>
> The domain host has the cron job in a folder that I can upload to. The
> error_log there has the same warning message that was sent. I do not
> see any syslog. I do not know what splunk is.

syslog is on the systems /var/log directory, you don't seem to have
access there, but your web hosting company has setup system so that you
get access to logs belonging to your site in your home directory instead.

For logging use syslog() see more about it at www.php.net/syslog

Splunk is a platform for collecting, searching, monitoring and analyzing
machine data. Many times used to centralize your logs and make it easier
to search for information. Most likely you don't need it as you only
have a hosted service.

--

//Aho
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: [Mac OS X ML] how to install MongoDB driver
Next Topic: Trouble-shooting a script that doesn't retuen HTML
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sat Nov 23 23:34:08 GMT 2024

Total time taken to generate the page: 0.04694 seconds