L'erreur open_basedir de PHP

Si le message d'alerte suivant s'affiche sur votre site :

Warning: main() [function.main]: open_basedir restriction in effect

cette solution vous concerne :

L'open_basedir de PHP est un mécanisme de sécurité que nous vous proposons par défaut afin de limiter les actions des scripts PHP de votre site Internet à ses fichiers uniquement et pas à un autre site de votre espace personnel.

Ce message d'alerte survient alors quand vous faites appel à une page en dehors de votre site. Dans la majorité des cas, c'est une erreur de développement PHP dans votre page.

Lors du développement PHP avec des fonctions telles que des include, require, etc., nous commettons souvent la faute de pointer vers ces fichiers par des liens relatifs. Il faut alors changer de méthode pour que cela fonctionne et alors appeler ces fichiers avec des liens absolus.

Il existe une méthode très simple pour avoir un lien absolu. Voici un exemple de code avec une fonction include() et une page “ fonction.php ” dans le dossier “ news ” :

<?php include($_SERVER['DOCUMENT_ROOT'].'/news/fonction.php'); ?>

Si vous souhaitez que votre site Internet puisse accéder aux fichiers d'un autre site de votre espace personnel, il faut autoriser le ou les sites que vous possédez préalablement. Vous pouvez également retirer cette protection sur le ou les sites de votre choix si vous souhaitez par exemple utiliser des fonctions systèmes telles que shell_exec() ou system() de PHP.