Quelques solutions à des problèmes communs sur 000webhost
Vu la popularité du serveur gratuit 000webhost, beaucoup de développeurs l'ont adopté et si comme moi c'est la première fois que vous l'utilisez, vous risquez de rencontrer quelques erreurs lors de la mise en place de votre projet. Voici quelques astuces qui vous donneront des pistes de solutions.
Configurer correctement le RewriteBase dans .htaccess
Selon vos besoins :
RewriteBase /
Désactiver le code analytics en JavaScript
Pour une raison que j'ignore, je n'ai pas trouvé l'accès par le cPanel. Mais rendez-vous ici pour l'activer / désactiver.
http://members.000webhost.com/analytics.php
Erreurs dans foot.php
Je vois apparaître à l'écran une des erreurs suivantes (pourtant, je n'ai pas de fichier foot.php dans mon projet) :
- Undefined index: HTTP_X_REQUESTED_WITH /usr/local/lib/php/foot.php 3
- Undefined variable: c_ads /usr/local/lib/php/foot.php 3
$_SERVER['HTTP_X_REQUESTED_WITH'] = '';
$c_ads = '';
Ou utiliser une solution propre, par .htaccess (on voit bien la configuration par phpinfo()) :
php_value auto_append_file none
Configurer une page 404 dans .htaccess
ErrorDocument 404 /ma-page-404.php
Désactiver les directory listings dans .htaccess
Pour éviter de voir la liste des fichiers lorsqu'on est à la racine d'un répertoire.
Options All -Indexes
Robots.txt
Tout s'affiche sur une ligne unique. Assurez-vous d'avoir ajouté cette ligne dans votre fichier .htaccess :
AddType text/plain .txt
Prise en charge des erreurs
Dans le fichier .htaccess, indiquez le niveau d'erreur à rapporter (exemple : la constante PHP E_ALL = 30719) mais indiquez de ne pas afficher les erreurs à l'écran (pour éviter de donner des indices aux gens mal intentionnés) :
php_value error_reporting 30719
php_flag display_errors 0
Ensuite, dans le code PHP, écrivez votre propre fonction pour prendre en charge ce qui se passe lorsqu'une erreur survient avec set_error_handler.
set_error_handler('ma_fonction');Inclure Zend Framework
function ma_fonction($errno, $errmsg, $filename, $linenum, $vars){
// minimalement, faites afficher un message
echo "Oups, erreur!":
// écrire l'erreur dans un log
}
Le service 000webhost bloque l'ouverture des fichiers lorsqu'ils sont préfixés par le chemin absolu d'un répertoire virtuel. Oubliez $_SERVER['DOCUMENT_ROOT']. Je n'ai pas eu d'autre choix que de définir le chemin au long dans la propriété include_path. Par exemple, déposez le répertoire de Zend dans un dossier "inc" qui se trouve à la racine de public_html.
Ensuite, utilisez ini_set() en PHP (dans un bootstrap ou fichier global) :
ini_set('include_path', ini_get('include_path').':/home/xxxxxxxxx/public_html/inc:');
Ou mieux avec .htaccess :
php_value include_path ".:/home/xxxxxxxxx/public_html/inc"
Pour configurer le chemin exact, référez-vous à la rubrique Account Information du cPanel de 000webhost et remplacez xxxxxxxxx par votre nom d'utilisateur.
Merci beaucoup du fond du coeur ;)
Salut !
Merci pour l'article. Cependant je reste coincé sur un point. Mon côté client fait un appel ajax vers une action php située dans mon controller. En locale ca marche très bien, mais sur 000webhost j'ai une erreur 404.
y a-t-il une config que j'ai loupée ? Merci bien.