Re: cron job and headers sent error [message #182772 is a reply to message #182771] |
Sun, 08 September 2013 20:42 |
Richard Yates
Messages: 86 Registered: September 2013
Karma:
|
Member |
|
|
Thank you for the detailed info.
On Sun, 08 Sep 2013 22:30:26 +0200, "J.O. Aho" <user(at)example(dot)net>
wrote:
> 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.
|
|
|