Jun 21

Message:

PHP Warning: Cannot modify header information - headers already sent by (output started at /home/w.php:189) in /home/start.php on line 64

Error type: warning

Symptoms:

You try to send a header value from PHP (for example a redirect) and it fails with this warning.

Sample Code:

<?php
echo ‘Redirecting: ‘;
header(‘Location: /’);
exit;
?>

Cause:

You must send headers before you output anything on that page. This means you can’t use echo, printf or any other output function before all headers are sent.

Fix:

Check where you used the header() function and remove any output instructions before that.

Please note that blank spaces before <?php are also considered part of the output and will give you lots of trouble. This also applies to files you include (for example configuration files), so make sure you don’t leave extra spaces/empty lines).

Another method to get rid of this problem is to use output buffering.

Jun 21

Message:

PHP Warning:fsockopen(): unable to connect to rpc.technorati.com:80 (Connection timed out) in /home/public_html/pinger.php on line 66

Error type: warning

Symptoms:

You try to open a socket to a remote location, but your connection is timed out (you don’t receive any response).

Sample Code:

<?php
$fs = fsockopen($ping_host, $ping_port, $errno, $errstr);

if (is_resource($fs))
{
stream_set_write_buffer($fs,0);
fwrite($fs, $http_request);
while (!feof($fs))
{
$response .= fgets($fs, 2048);
}
fclose($fs);
}
?>

Cause:

The host you are trying to connect to is either down or takes too long to respond (or from other reasons, you just can’t get a response).

Fix:

Get a beer, watch a movie, play a game … really, there’s not much you can do usually. Wait a few minutes and try again. If you still get the same response check if there is any problem with your server (for example DNS problems), eventually contact your hosting provider.

Jun 21

Message:

PHP Warning: Variable passed to each() is not an array or object in /home/functions.php on line 23

Error type: warning

Symptoms:

You try to use each, but instead of going through the loop, you just receive a warning.

Sample Code:

<?php
while (list($key, $val) = each ($myvar))
{
echo $key.’ ‘;
}
?>

Cause:

You try to use the each() function with a null, integer or string variable (or generally not an array or object). This might be caused by an uninitialized variable you try to use with each();

Fix:

Make sure the variable you try to pass exists and is not null first. You should also make sure you didn’t misspell the variable name (if you try to use a variable that has not been initialized you get the same warning).

You should try to use function is_array($array) to make sure the variable passed is indeed an array.

Jun 21

Message:

PHP Warning: reset(): Passed variable is not an array or object in /home/cron.php on line 43

Error type: warning

Symptoms:

You get a reset() warning although the code seems to work fine.

Sample Code:

<?php
$string = “This is a string.”;
reset($string);
?>

Cause:

You try to use the reset() function with a null, an integer or a string (these are most common), when you should only use it with an array or object. Usually this is caused by accidental type casting or misspelling of variable names.

Fix:

Make sure the variable you try to reset exists and is not null first. You should also make sure you didn’t misspell the variable name (if you try to reset a variable that has not been initialized you get the same warning).