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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.