Bonjour! j' ai un problème avec la fonction require qui marche en local mais une fois en hébergé chez OVH j'ai juste une page blanche avec l'url qui correspond bien à l'arborescence de mon site web. Si d'aventure quelqu'un a une solution pour moi, j'en serais vraiment ravi! merci d'avance

14 réponses


Salut,

Tu requires l'autoloader de composer ? Tu l'as bien entendu généré ?

Si ce n'est pas sa, tu pourrais simplifier le code au maximum et nous le montrer ?

Si tu as accès au log, tu peux y trouver des infos utiles.

spynol
Auteur

Salut! merci de me repondre aussi vite. En fait j'ai remplacé mon index.php par un autre qui ne contient que ce code :
<?php require '../pages/Modeles/model1.php'; ?>
qui est sensé inclure le model pour l'affichage avec les différents styles mais rien ne s'affiche; même pas une page d'erreurs

même pas une page d'erreurs

Normal, tu es en prod. :)

Que contient ../pages/Modeles/model1.php ?

Essaye d'enlever le ?> de ton index.php.

spynol
Auteur

même en enlevant la fermeture de la balise PHP rien ne change.j'ai pris le soin de supprimer tout ce qui est php dans le fichier .

../pages/Modeles/model1.php

donc il ne contient plus que de l'HTML

Essaye de faire ceci et nous donner le résultat :

var_dump(realpath('../pages/Modeles/model1.php'));

C'est ce que tu attendais ?

Salut,
des fois, t'aurai pas une majuscule à ton fichier model1.php (donc tu l'aurai pas nommer comme ceci : Model1.php) ?
Perso ça m'est arrivé quelques fois de faire cette erreur. Avec Wmap ça marche, mais en ligne chez OVH, page blanche...

Chez OVH, pour afficher les erreurs, il y a plusieurs possibilités :

  • soit tu installes / édites à la racine de ton hébergement mutualisé le fichier .ovhconfig, avec la ligne environment=development
  • soit tu insères sur ton fichier bootstrap ini_set('display_errors',1);

Sinon, re-configures ton php.ini si tu es sur un serveur VPS ou dédié, en plaçant la ligne display_errors sur On.
Là, tu pourras déjà comprendre quel est le problème exactement...

Lien : https://www.ovh.com/fr/g1562.mutualise_comment_diagnostiquer_une_page_blanche

des fois, t'aurai pas une majuscule à ton fichier model1.php (donc tu l'aurai pas nommer comme ceci : Model1.php) ?
Perso ça m'est arrivé quelques fois de faire cette erreur. Avec Wmap ça marche, mais en ligne chez OVH, page blanche...

Pour l'info, c'est causé par Linux qui a un filesystem case-sensitive, contrairement à Windows.

spynol
Auteur

ce n'est pas une histoire de majuscules c'est juste le require qui ne fonctionne pas sinon le chemin est le bon.
Quand j'essaye le

var_dump(realpath('../pages/Modeles/model1.php')); 

le resultat est bool(false)

spynol
Auteur

Resultat après activation des erreurs ( ini_set('display_errors',1);)
Warning: require(/home/mondomaine/www/Application/Dossier/nomdelatable.php): failed to open stream: No such file or directory in /home/mondomaine/www/Application/Dossier/Autoloader.php on line 17

Warning: require(/home/mondomaine/www/Application/Dossier/nomdelatable.php): failed to open stream: No such file or directory in //home/mondomaine/www/Application/Dossier/Autoloader.php on line 17

Fatal error: require(): Failed opening required '/home/fasodiaeep/www/App/Tables/Article.php' (include_path='.:/usr/local/php5.6/lib/php') in /home/mondomaine/www/Dossier/Autoloader.php on line 17

Au moins maintenant je commence à voir les erreurs.merci d'avance

realpath() retournant false signifie que il ne trouve pas le fichier/dossier. Tu dois avoir un problème de relativité. :)

Aussi, tu utilises un autre fichier ? Tu nous avez dit qu'il n'y a pas d'autre PHP que le require, mais il semble que il y en est deux autres.

spynol
Auteur

si je fais :
Dossier1
sousDossier1
fichierTest.php
sousDossier2
Dossier2
index.php

Pour inclure le fichier fichierTest.php depuis index.php je fais:

require '../Dossier1/sousDossier1/fichierTest.php'; 

est-ce correcte ?

Oui c'est correcte à condition que index.php ne soit pas lui même un fichier inclus depuis un autre fichier car dans ces cas là ça peut être faux. Le mieux pour être sur d'être dans le bon dossier c'est d'utiliser la constante DIR :

<?php
require __DIR__.'/../Dosser1/sousDosser1/fichierTest.php';

Avec cette constante tu es sur de partir de /Dossier2 quoi qu'il arrive.

spynol
Auteur

j'ai finalement pu résoudre mon problème:

ini_set('display_errors',1); // juste pour voir les erreurs (Merci MZKD)
define('DS', DIRECTORY_SEPARATOR);
define('RACINEWEB', dirname(dirname(__FILE__)));
require RACINEWEB.DS.'Appllication'.DS.'Fichier'.'.php';

et les noms des fichier.php étaient en minuscule alors que les noms des classes ont une majuscule au début causant un disfonctionnement de l'autoloader qui ne trouvait plus les fichiers en question.

Merci à tous pour vos différentes contributions et j'espère pouvoir vous le rendre!