Détecter un module apache avec PHP

Utile pour détecter le mod_evasive par exemple.

/**
 * return true if the module $name is activated in apache
 *
 * @param string $name module name
 * @return boolean
 * @author Samdha
 **/
function detect_apache_mod($name) {
    $save = ob_get_clean();
    ob_start();
    phpinfo();
    $phpinfo = ob_get_clean();
    if ($save !== false) {
        ob_start();
        echo $save;
    }
    return (strpos($phpinfo, $name) !== false);
}
    
if (detect_apache_mod('mod_evasive')) sleep(1);

Utilisé dans le module Prestashop de mise à jour facile

Convertir une date excel en timestamp

Avec PHP-ExcelReader, on se retrouve parfois avec des timestamps Excel au lieu de date. Voici comment les convertir en timestamps unix.

    $timestampExcel = 40544;
    $timestampUnix = 86400*($timestampExcel - 25569);
    echo date('Y-m-d', $timestampUnix); // 2011-01-01

Forcer index.php avec Wordpress

Wordpress a une mauvaise habitude : si vous allez à la racine de votre blog en tapant http://www.example.com/index.php, il vous redirigera vers http://www.example.com/ . De même http://www.example.com/index.php?cat=1 est redirigé vers http://www.example.com/?cat=1 .

En général c’est une bonne chose : tout le monde s’en fout, l’URL est plus petite et personne n’a besoin de savoir que votre site est en PHP.

Par contre si vous avez un fichier index.html c’est très génant : impossible de visiter votre blog, on retombe toujours vers index.html puisque c’est la page par défaut sur la plupart des serveurs.

Donc voici comment faire pour forcer l’utilisation de index.php dans les URL :

Fichier wp-includes/link-template.php ligne 1869

    $url .= '/' . ltrim( $path, '/' );

devient

    $url .= '/' . ltrim( 'index.php'.$path, '/' );

Fichier wp-includes/canonical.php ligne 58

//$original['path'] = preg_replace('|/index\.php$|', '/', $original['path']);

devient

$original['path'] = preg_replace('|/index\.php$|', '/', $original['path']);