Jump to content

Cannot modify header information / Testing server problems


bronzemonkey

Recommended Posts

I've got a LAMP testing server which is putting out the following error for php pages with

<?php header('Content-type: text/html; charset=utf-8'); ?>

as the second line of code.

 

Warning: Cannot modify header information - headers already sent by (output started at /home/administrator/testwebsite.com/htdocs/index.php:3) in /home/administrator/testwebsite.com/htdocs/head.php on line 2

 

This isn't occurring on an identical copy of the source code hosted by a commerical web server. What differences are there between my apache setup in my virtual machine and in the commerical server? What is causing the warning to appear?

 

===================

 

I also have a php contact page which sends its contents to a specified email address (someemail@hotmail.com). How can I test it on my testing server (which can only be accessed from within my small network)? I completed an identical copy of this page, hosted on my testing server, and the email was never sent to "someemail@hotmail.com"...which is good. But where did the contents of the contact page try to send themselves? How can I tell if the php code is working correctly without being able to view the destination of the content? Can someone shed some light on how I can test this code within my virtual server?

 

===================

 

And finally, how do I set up logs for each specific domain on my apache server?

Link to comment
Share on other sites

Three questions in one....

 

Your first issue is that of you php programming. You cannot call the header() function after ANY output has already been sent to the client. There is a massive sticky on the subject in PHP Help.

 

You could hide the error by changing php's error reporting level within your php.ini. I would fix your code instead though. Nothing to do with Apache.

 

I'm not exactly sure what your second question actually is. I think your asking how to send an email from your local server. You need to either setup a local mail (smtp) server, or use a remote smtp server. Once again, these setting are within your php.ini. Nothing to do with Apache.

 

Thirdly, you simply need to add a ErrorLog directive to the root of your vhosts section. One of my vhosts looks like...

 

<VirtualHost *>
    ServerName foo
    DocumentRoot /var/www/foo
    <Directory /var/www/foo>
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/foo>
        Options FollowSymLinks MultiViews
        AllowOverride All 
        Order allow,deny
        allow from all 
        DirectoryIndex index.php
    </Directory>
    ErrorLog /var/log/apache/foo-error.log
    LogLevel warn
    CustomLog /var/log/apache/foo-access.log combined
    ServerSignature On
</VirtualHost>

Link to comment
Share on other sites

Thanks for the reply.

 

I just don't get why the header is causing a problem. I read the sticky and can't see how it applies to my code...what is the output that has already been sent to the browser? This is the very first thing that appears in the code.

 

<?php header('Content-type: text/html; charset=utf-8'); ?>

 

As for my second question; I want to be able to test code that sends information to an email address. So if I need my live site to send contact-form information to the email bob@hotmail.com, how can I test (within my testing environment) the code that will achieve this?

 

Thanks for helping me out with the question about the log files.

Link to comment
Share on other sites

I also have the following appearing when the server boots up. I have two virtual hosts which were set up using webmin.

 

*Starting web server (apache2)...

apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.0.20 for ServerName

 

[error] Virtual Host *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

 

[error] Virtual Host *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

 

Those vhost errors also tie in with my difficulties to get the logs to work. Everything I google talks about the httpd.conf file (which is found at /etc/apache2/httpd.conf on my server) but that file is completely empty on my server. Instead the vhost information has been placed in files at /etc/apache2/sites-enabled and sites-available, which each vhost creating a new file with its info inside.

 

How do I go about giving the server a fully qualified domain name and avoiding the errors associated with my virtual hosts?

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.