-Flo- | 0 #21 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
C'est quoi l'erreur ?
Contribution le : 02/03/2014 23:41
|
|
Signaler |
Poum45 | 0 #22 |
|
---|---|---|
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214 |
Pour ne pas confondre, j'ai renommé le fichier reference.php en reference.js (je pouvais aussi faire un .txt mais bon)
En revanche, la page c'est bien un .php. Cette dernière est dans la racine du site. J'en ai une autre (celle qui déconne) dans un dossier. Warning: Wrong parameter count for strstr() in /homez.462/atelierwk/www/prestations.php on line 33 Warning: include(/www/scripts/references.js) [function.include]: failed to open stream: No such file or directory in /homez.462/atelierwk/www/prestations.php on line 33 Warning: include() [function.include]: Failed opening '/www/scripts/references.js' for inclusion (include_path='.:/usr/local/lib/php') in /homez.462/atelierwk/www/prestations.php on line 33
Contribution le : 02/03/2014 23:47
|
|
_________________
Les mouches m'agacent mais Le Croco c'est par là |
||
Signaler |
-Flo- | 0 #23 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
C'est pas normal que tu aies ça : include(/www/scripts/references.js)
Tu es sûr d'avoir bien recopié le strstr(__FILE__, '/www/', true) ? Si tu fais juste un echo de ce strstr tu as quoi ?
Contribution le : 02/03/2014 23:57
|
|
Signaler |
Poum45 | 0 #24 |
|
---|---|---|
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214 |
Citation :
VOilà une capture du code Quelle est la syntaxe précise pour l'echo ?
Contribution le : 03/03/2014 00:02
|
|
Signaler |
-Flo- | 0 #25 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
Alors tu dois avoir une version moins récente de php, ou une config particulière...
Bon alors solution encore plus dégueu, mais au moins ça fonctionnera : include '/homez.462/atelierwk/www/scripts/references.php'; En attendant de trouver mieux !
Contribution le : 03/03/2014 00:15
|
|
Signaler |
Poum45 | 0 #26 |
|
---|---|---|
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214 |
Citation :
J'ai testé et évidement... elle, ça fonctionne mais comme tu le dis, ce n'est pas propre Je garde comme ça pour le moment mais j'aimerais bien comprendre comment résoudre ce problème. En tout cas, merci mille fois Flo pour la peine. Idem à Volvik et les autres Pour info : PHP Version 5.2.17
Contribution le : 03/03/2014 00:25
|
|
Signaler |
Biiiiiip | 0 #27 |
|
---|---|---|
Je masterise !
Inscrit: 10/01/2008 13:31
Post(s): 4693
Karma: 684 |
Citation :
ah bah flo a donné la solution
Contribution le : 03/03/2014 08:53
|
|
Signaler |
Poum45 | 0 #28 |
|
---|---|---|
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214 |
Oui mais on est en url absolue.
Si un jour quelqu'un comprend ce qui m'arrive
Contribution le : 03/03/2014 13:06
|
|
_________________
Les mouches m'agacent mais Le Croco c'est par là |
||
Signaler |
-Flo- | 0 #29 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
On a très bien compris ce qu'il t'arrive, et tu as 3 solutions :
- Soit concevoir ton appli de telle sorte qu'elle s'appuie sur un fichier de conf qui contiendra une constante correspondant à ton chemin absolu côté serveur - Soit réaliser tes includes au cas par cas selon l'emplacement du fichier qui réalise les include (include 'scripts/references.php' ou include '../scripts/references.php' selon les deux cas que tu as présentés) - Soit regénérer automatiquement le chemin absolu à chaque include Pour la dernière solution, ma proposition ne fonctionnait pas car tu utilises une version de php dépassée depuis au moins 3 ans (tu cumules :-D). Mais elle peut être effectuée différemment, en plus verbeux. Par exemple tu peux faire un substr(__FILE__, 0, strpos(__FILE__, '/www/') + 5); Mais c'est un peu chiant de devoir le recopier à chaque include...
Contribution le : 03/03/2014 13:27
|
|
Signaler |
Biiiiiip | 0 #30 |
|
---|---|---|
Je masterise !
Inscrit: 10/01/2008 13:31
Post(s): 4693
Karma: 684 |
juste par curiosité (vu que je ne suis plus développeur et que je n'ai pas suivi les évolutions du PHP ces dernières années), pourquoi ma solution, finalement retenue, est-elle "dégueu" ?
ok, c'est lié à l'hébergement et ça n'est pas exportable sans modification du chemin absolu, mais c'est toujours utilisé aujourd'hui pour faire du htaccess/htpasswd par exemple. donc en quoi cela pose problème ? edit : sinon l'autre solution pour ne pas se prendre la tête, c'est d'utiliser le domaine du site et de construire le chemin absolu à partir de celui-ci. ça fonctionne parfaitement, une source du style http://www.mondomaine.com/chemin/route/pwet.php , et rulezzz.
Contribution le : 03/03/2014 14:42
|
|
Signaler |
-Flo- | 0 #31 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
Je ne suis pas développeur non plus, mais déjà parce que ça t'oblige à recopier tout le chemin à chaque fois que tu veux réaliser un include, ce qui est fastidieux (mais commun aux solutions 2 et 3), et en plus parce que comme tu le dis ce n'est pas exportable, et ça c'est spécifique à la solution 3. Si tu as un environnement de dev et un environnement de prod différents, tu es foutu. Et si un jour tu veux passer ton appli sur un autre environnement, tu dois patcher tous les fichiers qui réalisent un include.
C'est pourquoi les solutions 1, 2, et 3 sont proposées de la plus propre à la moins propre. Le htaccess/htpasswd n'est plus tant utilisé que ça, ou quand il l'est encore c'est surtout pour une raison de facilité et en peu d'occurrences distinctes. Ce qui n'est alors pas plus contraignant qu'un fichier de conf pour ton appli.
Contribution le : 03/03/2014 15:06
|
|
Signaler |
Biiiiiip | 0 #32 |
|
---|---|---|
Je masterise !
Inscrit: 10/01/2008 13:31
Post(s): 4693
Karma: 684 |
je n'ai peut-être pas compris le problème exposé dans son ensemble, ça me paraissait être la solution la plus simple (y compris en correction et en déploiement) quand j'ai lu "Je pourrais créer un chemin absolu à partir de l'URL mais ça ne se fait pas", car c'est ce que j'aurais proposé en premier.
j'avais l'impression que le htaccess/htpasswd revenait à la mode, je tombe de plus en plus souvent dessus pour des applis pro (et du coup, j'ai fait de même pour celle que j'ai mise en place, histoire de pas m'emmerder avec des sessions et d'avoir un minimum de sécurité...).
Contribution le : 03/03/2014 15:20
|
|
Signaler |
Poum45 | 0 #33 |
|
---|---|---|
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214 |
Citation :
Si si, tu as bien compris. En effet, mettre l'url en dur et complète fonctionne parfaitement. Quand à la recopie cela ne me pose aucun soucis car comme dit plus haut, j'utilise DreamWeaver et ce bout de code est dans le template. Si un jour je devait changer toutes les pages se remettraient à jour ensemble. Idem pour le fichier d'include qui continent le nom des fichiers (images) du diaporama. Cela dit, j'aimerai comprendre comment on doit saisir une url afin d'indiquer qu'on "démarre" à la racine du site et ce, peu importe là où l'on se trouve (dans les dossiers du site). Un peu comme le "\toto" qui sous MSDOS voulait dire "à partir de la racine du DD"
Contribution le : 03/03/2014 16:25
|
|
Signaler |
-Flo- | 0 #34 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
Citation :
Bah ça c'est très simple, il suffit de faire débuter l'url par "/". Mais je ne vois pas très bien le rapport, sauf si on en revient au chemin des images... Ou sauf si tu considères que tu passes des urls à ton include, ce qui est incorrect dans ce cas précis.
Contribution le : 03/03/2014 16:38
|
|
Signaler |
Biiiiiip | 0 #35 |
|
---|---|---|
Je masterise !
Inscrit: 10/01/2008 13:31
Post(s): 4693
Karma: 684 |
Citation :
ben du coup Flo a donné la réponse avec __DIR__ si j'ai bien compris l'utilité de cette variable. mais de toute façon, arrête de bosser et donne ça à tes dév edit : j'ai trouvé un résumé bien formulé ici.
Contribution le : 03/03/2014 16:41
|
|
Signaler |
-Flo- | 0 #36 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
Non pas vraiment car __DIR__ donne le chemin jusqu'au fichier courant. Donc il ne s'arrête pas à la racine (sauf si le fichier lui-même est à la racine).
Contribution le : 03/03/2014 16:50
|
|
Signaler |
Poum45 | 0 #37 |
|
---|---|---|
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214 |
Système de fichier include() et autres /a/b/c/ -> Fait référence à la racine même du serveur (donc peut être à l'extérieur du domaine public
Le voilà mon soucis. Le "/" remonte vraiment à la racine du serveur (du moins, mon espace). Ainsi, l'url devient : /homez.462/atelierwk/www/scripts/references.js Ma question est comment pointer (se positionner) directement à partir du www Edit : ce qui est fou c'est que concernant l'url des images, le "/images/toto.jpg" fonctionne et ce, peu importe l'emplacement de la page qui fait cet appel:-o edit bis : Pour que ce soit valide, il faudrait que la directive include_path du fichier de configuration php.ini de PHP soit défini de manière à ce que le dossier racine du domaine fasse partie des chemins où PHP recherchera pour le fichier. Et encore là puisque c'est un chemin absolu... Et là :gratte: je ne sais pas faire
Contribution le : 03/03/2014 16:54
|
|
Signaler |
Biiiiiip | 0 #38 |
|
---|---|---|
Je masterise !
Inscrit: 10/01/2008 13:31
Post(s): 4693
Karma: 684 |
Citation :
ben avec ton domaine tu passes du coup outre la différence entre HTTP et système de fichier (comme indiqué dans les explications détaillées). edit : parce que tu n'as pas accès au php.ini sur un mutualisé.
Contribution le : 03/03/2014 17:03
|
|
Signaler |
-Flo- | 0 #39 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
Citation :
Ce n'est pas fou du tout, c'est juste que tu mélanges deux types de chemins. D'un côté, il y a les chemins qui sont interprétés côté serveur, et qui correspondent donc au chemin depuis la vraie racine de ton serveur. Ce sont ceux que tu utilises dans le cadre de tes includes php. De l'autre côté, il y a les chemin qui sont interprétés côté client, et donc par le navigateur de l'internaute. C'est pourquoi le / du début du chemin des images permet au navigateur de remonter jusqu'à la racine de ce qu'il connait : le domaine de ton site (le navigateur ne peut pas remonter plus haut que ce qu'il voit). Mais le / côté serveur remonte jusqu'à la vraie racine, qui elle est plus profonde que la limite de ton espace www. Donc pour résumer : - un chemin utilisé dans une commande php : interprété par le serveur, débute à la racine du serveur - un chemin affiché dans une balise html : interprété par le navigateur, débute à la racine du domaine
Contribution le : 03/03/2014 17:42
|
|
Signaler |
Poum45 | 0 #40 |
|
---|---|---|
Je poste trop
Inscrit: 03/12/2007 23:03
Post(s): 59592
Karma: 4214 |
Ah OK Flo, là, j'ai compris
(bah oui, des fois j'ai la tête dur) Volvik, non, l'url type http://www.domaine... ne fonctionne pas. Il faut passer par ce qui était indiqué plus haut /homez.462/atelierwk/www/scripts/references.js Quant au php.ini... ça se trouve où ? Côté manager OVH je n'ai rien trouvé, en FTP non plus.
Contribution le : 03/03/2014 17:46
|
|
_________________
Les mouches m'agacent mais Le Croco c'est par là |
||
Signaler |