Oups ! Je me suis fait avoir comme un bleu !
Pendant environ 9 heures, le blog du référencement pour les nuls est resté inaccessible avec un vilain message d’erreur.
Je m’en suis rendu compte ce matin et rapidement corrigé le problème, qui était un effet de bord de modifications apportées hier soir au niveau du domaine principal (www.feuxi.com).
Depuis quelques jours, je bataillais pour installer Drupal 6.8 chez mon hébergeur 1and1.fr. J’ai parcouru beaucoup de forums et découvert que j’étais loin d’être le seul à me heurter à ce qui semblait être une incompatibilité totale : l’installation de Drupal nécessite que la directive register_globals soit désactivée, ce qui est plutôt une bonne chose au niveau de la sécurité. Or sur mon hébergement Linux chez 1and1, cette directive est activée par défaut et impossible à désactiver simplement en utilisant le fichier .htaccess.
Le fichier .htaccess standard livré avec Drupal 6 contient pourtant les directives suivantes :
# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.
# PHP 4, Apache 1.
<IfModule mod_php4.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>
# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0
</IfModule>Cela fonctionne correctement chez beaucoup d’hébergeurs, mais pas chez 1and1.
J’ai essayé la méthode "bourrin" : php_flag register_globals Off (sans instruction IfModule préalable) et j’ai eu droit à un beau plantage 500 (Internal Server Error).
J’en ai donc conclu que 1and1 utilise PHP en mode CGI et non comme un module Apache.
Ce que semble d’ailleurs confirmer la FAQ de 1and1, puisqu’elle indique que pour désactiver la directive register_globals, il faut utiliser le fichier php.ini.
Hélas, pas plus de succès avec php.ini : toujours impossible d’installer Drupal.
J’avais fini par abandonner l’idée d’utiliser Drupal chez cet hébergeur quand je suis tombé par hasard sur ce post d’ubialect dans le forum de Drupal France :
27 mars, 2008 - 22:19
Une autre solution plus simple (pas de fichiers "php ;ini" partout ;p) consiste à mettre les lignes suivantes à la racine du site drupal dans le .htaccess :
#Forcer PHP5 chez 1and1 AddType x-mapp-php5 .php
En fait, on force 1&1 à utiliser PHP5 qu’ils n’utilisent pas par défaut alors qu’ils le supportent. L’astuce, c’est que les "Register_globals" sont désactivées par défaut avec PHP5 sur 1&1 !
J’ai aussitôt testé, et effectivement, j’ai pu installer Drupal sans problème (encore merci Ubialect).
Mais là où les choses se sont gâtées un petit peu, c’est quand j’ai décidé de faire la même modification sur le blog feuxi.com : je me suis dit en effet que cela serait une bonne idée d’utiliser PHP 5 également sur ce site.
Après tout, avoir les directives register_globals et allow_url_fopen désactivées par défaut est plutôt une bonne chose au niveau de la sécurité.
J’ai donc modifié le fichier .htaccess à la racine du site pour y inclure la directive AddType x-mapp-php5 .php. Pas de problème sur feuxi.com.
Par contre, sur le sous-domaine seo.feuxi.com, j’avais fait une petite modification dans le fichier spip.php pour bloquer les spammers chinois et russes....et cette modification qui fonctionnait très bien sous PHP 4 provoque une erreur sous PHP 5 (Undefined index error !).
L’utilisation d’index illégaux sur une chaîne de caractères entraîne un message E_ERROR en PHP 5 au lieu d’un simple message E_WARNING en PHP 4.
C’est ce qui arrive quand on code avec les pieds !

Commentaires