[RESOLU] include 1and1

Eléphant du PHP | 183 Messages

28 déc. 2015, 16:33

Salut à tous !
Je viens vers vous car je galère depuis hier soir (cette nuit aussi) car mon site web s'approche de la fin, j'ai donc voulu faire un test en ligne sur mon hebergeur 1and1, et là rien de ne va

erreur =>

Code : Tout sélectionner

Warning: include(/config-connexion.php): failed to open stream: No such file or directory in /homepages/14/d592775012/htdocs/fonction/function.php on line 2 Warning: include(): Failed opening '/config-connexion.php' for inclusion (include_path='.:/usr/lib/php7.0') in /homepages/14/d592775012/htdocs/fonction/function.php on line 2 Warning: include(/config-connexion.php): failed to open stream: No such file or directory in /homepages/14/d592775012/htdocs/fonction/function_image.php on line 2 Warning: include(): Failed opening '/config-connexion.php' for inclusion (include_path='.:/usr/lib/php7.0') in /homepages/14/d592775012/htdocs/fonction/function_image.php on line 2
J'ai verifier le chemin avec un fichier chemin.php ( echo realpath('chemin.php'); ), j'ai donc modifier tout mes chemins includes dans tout mes fichiers, et pareil, j'ai essayé plusieurs tentative, et pareil, je craque là
Pour l'instant j'ai un .htaccess qui bloque le site a la racine (car en dev), mais meme sans .htaccess, pareil....
A l'aide !! (ai-je bien fait de choisir 1and1 ? )....

Mammouth du PHP | 810 Messages

28 déc. 2015, 17:40

Bonjour laplumeaencre,

prends ton temps pour bien lire les messages d'erreur, tout y est.

Code : Tout sélectionner

Warning: include(): Failed opening '/config-connexion.php' for inclusion (include_path='.:/usr/lib/php7.0') in /homepages/14/d592775012/htdocs/fonction/function.php on line 2
La page function.php appelle /config-connexion.php depuis le répertoire maître du serveur. C'est sûr qu'un hébergeur ne te laissera jamais accéder à son répertoire maître.

Il faudrait plutôt lire:

Code : Tout sélectionner

include "config-connexion.php";
sans la barre oblique initiale afin que le serveur aille chercher le-dit fichier dans /homepages/14/d592775012/htdocs

Si c'est ta page index.php que appelle la page fonction/function.php il faudra même que tu indique d'aller trouver ta config-connexion.php dans le sous-répertoire fonction ainsi:

Code : Tout sélectionner

include "fonction/config-connexion.php";
Soyez artisans de paix

Eléphant du PHP | 183 Messages

28 déc. 2015, 18:40

Grand merci pour ta réponse, mais c'est pareil

Code : Tout sélectionner

Warning: include(config-connexion.php): failed to open stream: No such file or directory in /homepages/14/d592775012/htdocs/fr/traitement_inscription.php on line 2 Warning: include(): Failed opening 'config-connexion.php' for inclusion (include_path='.:/usr/lib/php7.0') in /homepages/14/d592775012/htdocs/fr/traitement_inscription.php on line 2 Warning: include(fonction/function.php): failed to open stream: No such file or directory in /homepages/14/d592775012/htdocs/fr/traitement_inscription.php on line 3 Warning: include(): Failed opening 'fonction/function.php' for inclusion (include_path='.:/usr/lib/php7.0') in /homepages/14/d592775012/htdocs/fr/traitement_inscription.php on line 3 Warning: include(fonction/function_image.php): failed to open stream: No such file or directory in /homepages/14/d592775012/htdocs/fr/index.php on line 4 Warning: include(): Failed opening 'fonction/function_image.php' for inclusion (include_path='.:/usr/lib/php7.0') in /homepages/14/d592775012/htdocs/fr/index.php on line 4
En fait l'arborescence est =>
Racine (espace vide ou j'arrive en ftp sur 1and1)
Dossier =>
fonction => fichier function.php et function_image.php
fr=> tous les fichier du site en lui meme dont index.php et traitement_inscription.php (qui aurait mieux nommé traitement_index....)
Toujours en racine => fichier php dont config-connexion.php

J'ai tellement fait de test que je comprend plus rien a mes chemins, tout etait nickel en localhost, la deception depuis hier...

Mammouth du PHP | 835 Messages

28 déc. 2015, 19:05

il faut utiliser $_SERVER['DOCUMENT_ROOT'] dans ses include pour que cela fonctionne en local et en production.

Eléphant du PHP | 183 Messages

28 déc. 2015, 19:08

Merci Or1
J'ai utilisé le chemins noter sur phpinfo() de mon hebergeur devant $_SERVER['DOCUMENT_ROOT'] , mais celui ci ne fonction pas non plus...je comprend pas.

EDIT =>
je viens de mettre ça =>

Code : Tout sélectionner

include $_SERVER['DOCUMENT_ROOT'].'/traitement_inscription.php'; include $_SERVER['DOCUMENT_ROOT'].'/fonction/function_image.php';
=erreur
et ça =>

Code : Tout sélectionner

include $_SERVER['DOCUMENT_ROOT'].'traitement_inscription.php'; include $_SERVER['DOCUMENT_ROOT'].'fonction/function_image.php';
pire il manque une barre entre htdocs et traitemen....

Mammouth du PHP | 810 Messages

28 déc. 2015, 20:41

Montre-nous ton code.

Donne-nous ton arborescence, telle que la vois en FTP
ce sera quelque chose comme
____________________________________________________
.
..
/fonction
/blabla
____________________________________________________

ou

____________________________________________________
.
..
/bin
/public_ftp
/public_html
/www

____________________________________________________
Il est à mon avis plus facile de reproduire en local l'arborescence de production pour éviter les erreurs.
Soyez artisans de paix

Eléphant du PHP | 183 Messages

29 déc. 2015, 00:34

Ok je vais essayer de faire plus clair.
Dans filezilla =>
. .
fr (dossier)
en (dossier)
fonction (dossier)
css (dossier)
image (dossier)
avatar (dossier)
auth-config.php (fichier)
config-connexion.php (fichier)
gestionnaire_cnx_users.php (fichier)
.htcaccess et passwd
END

DANS fr =>
plusieurs fichiers php qui compose mon site (version fr)
Certains de ces fichiers font appel au fichier function.php (dans dossier fonction), a config-connexion.php, a gestionnaire_cnx_users, mais aussi a plusieurs css (dans dossiers css), mais aussi des includes sur des fichiers php dans ce meme dossier (fr).

voila

Eléphant du PHP | 183 Messages

29 déc. 2015, 01:38

Bon ça semble resolu, j'ai plus qu'a modifier dans tout les fichier maintenant et aussi dans la bdd pour certaines choses...
En tout cas merci a vous pour m'avoir mis sur la bonne piste, a bientot !
--------------
l'arborescence est du type (a mettre dans include ou un href par exemple) (Pour tout ceux qui vont s'heberger chez 1and1 !!)
=>racine de votre site (sur quoi vous arriver en se logguant avec filezilla :-) ) = ../
=>../css/fr.css
=>../fr/index.php
=>../image/
=>../config-connexion.php

ViPHP
ViPHP | 5882 Messages

29 déc. 2015, 11:49

Bonjour,

Ton code ne doit pas dépendre de l'hébergement, et cela vaut également pour les includes.
La bonne pratique est de référencer toutes les inclusions relativement. Auquel cas le chemin relatif est calculé par php par rapport au script principal appelé par l'utilisateur (fr/index.php, en/index.php, etc). Il faut donc en tenir compte lorsque tu inclues des fichiers qui en incluent d'autres. Cela signifie également que l'arborescence du site doit être indique à ton arborescence locale.

Cordialement

Eléphant du PHP | 183 Messages

29 déc. 2015, 20:27

Salut Sékitoyai
En effet tu as raison pour mon arborescence, au début de mon projet j'avais pas tous imaginer (ou ça allait n’emmener :-) ), erreur de codeur non pro...
Par contre après avoir trouver mon problème hier soir, c'est exactement la réflexion que je me suis fait, comment faire pour quand je code un projet en local, qu'il y a pas a se prendre la tete a tout modifier les liens ou includes lors de l'envois en ligne, la partie avant /fr/index.php par exemple, qu'elle soit justement trouver toutes seul par php, et non a retape a la manos lors du passage dev=> prod...
Comment faites vous vous les pro ?