Conditional tags in WordPress

You would like to know what type of page you are on? A list view or single view? Conditional Tags

<?php if (!empty($post->post_excerpt) &! is_single()) : ?>
        <?php the_excerpt(); ?>
        <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">Read the full post »</a></p>
<?php else : ?>
        <?php the_content(__('(more...)')); ?>
<?php endif; ?>

Weblinks

Bug in mod_php: DNS cached after change

After a change of Domain Name Server (in /etc/resolv.conf) it seems to be necessary to stop and start the Apache server. A simple restart will not do. I have not done any tests on which versions of Apache and mod_php are affected.

This weblog encountered the problem which showed in Wordpress plugin Akismet. Nice job that the programmers of Akismet have done. Not only do they show an error message but they provide you with first step diagnostic tools and with a page of further reading.  The best hint I got from the latter was that php methods/functions fsockopen and gethostbynamel must work flawlessly.  So I created a file with the following code on my server:

<?php
echo '<h1>fsockopen(rest.akismet.com, 80, $errno, $errstr);</h1>';
$r = fsockopen('rest.akismet.com', 80, $errno, $errstr);
var_dump($r);
var_dump($errno);
var_dump($errstr);
echo '<h1>fsockopen(google.com, 80, $errno, $errstr);</h1>';
$r = fsockopen('google.com', 80, $errno, $errstr);
var_dump($r);
var_dump($errno);
var_dump($errstr);
echo '<h1>gethostbynamel(rest.akismet.com);</h1>';
$t = gethostbynamel('rest.akismet.com');
var_dump($t);
echo '<h1>gethostbynamel(google.com);</h1>';
$t = gethostbynamel('google.com');
var_dump($t);
?>

Executing it from shell will work fine. But you must execute it in the Apache Webserver context meaning you need to call the script in your browser calling the server URI via http://YOUR_HOST/YOUR_PATH_TO_SCRIPT/YOUR_SCRIPTNAME.php

Further reading:

  • bytes.com php_network_getaddresses: getaddrinfo failed

Hacked computers spamming apache server log

If you find the following in the error.log of an apache webserver:

… [error] [client XXX.XXX.XXX.XXX] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): …

You can be sure that in most cases it is a computer, largely even running a webserver and many other services, with no firewall, lacking security precautions, xampp and phpmyadmin open to everybody, empty passwords, etc. sometimes they have all of these features at once. I have not checked for viruses but I expect most of them to even be infected or at least hacked and working for someone else than they ought to.

It is most likely that they send the request to your web server without the owner knowing about this. But one thing is for certain:

  1. It causes traffic
  2. Costs energy
  3. Spams your logs
  4. Etc. etc.

And all this because the computer administrator/owner has not made an effort to secure the computer at a minimum.
Go to your apache log directory an check if the same is happening to you using the following commands:

less error.log | grep RFC2616 | awk ‚{print $8}‘ | sort | uniq
less error.log | grep RFC2616 | awk ‚{printf(„%s %s %s\n“, $3, $4, $8)}‘

Further reading: