include et arborescence

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : include et arborescence

par naholyr » 03 juil. 2007, 11:03

Il y a aussi la méthode des environnements d'exécution, façon Symfony et autres, qui est assez facile à mettre en place (puisque finalement c'est la même que ce que je disais précédemment, à ceci près qu'au lieu de ne pas écraser le fichier de config sur le serveur de prod, on utilise plusieurs fichiers de conf et plusieurs bootstraps) :

- Tout le code "commun" à tout environnement est placé dans un fichier autre que l'index.php (par exemple "runtime.php") et index.php se réduit à sa plus simple expression :
1. La config
2. Le runtime (qui dépend de la config)
<?php

// Options dépendantes de l'environnement d'exécution (bdd, chemins, etc...)
require 'config/config.inc.php';

// Exécution de l'application
require 'includes/runtime.php';
- On crée un fichier "config-dev.inc.php" qui détermine la config en environnement de dév (localhost), et un fichier "config-prod.inc.php" qui détermine la config en environnement de production. Rien n'empêche d'en créer d'autres ;)

- On crée autant de points d'entrée qu'on a d'environnements :
index.php
<?php

require 'config/config-prod.inc.php';
require 'includes/runtime.php';
index-dev.php
<?php

require 'config/config-dev.inc.php';
require 'includes/runtime.php';
On n'a alors plus du tout à se soucier de l'environnement : quand je bosse en local j'appelle http://localhost/index-dev.php et sur le serveur de prod je me contente de supprimer l'accès au fichier "index-dev.php" (en ne l'uploadant pas, c'est le plus simple).

Et la règle d'or c'est que la seule différence entre mon serveur de prod et mon serveur de dév, c'est le fichier de conf utilisé. Tout le reste doit être rigoureusement identique.
On peut se créer autant d'environnements qu'on veut, le fichier de config devrait permettre de régler le niveau de débuggage, les chemins, l'activation ou non des benchmarks, etc...

par Hywan » 03 juil. 2007, 10:40

Bonjour bonjour :)

Je voulais juste commenter les méthodes que vous utilisez.

La méthode <base href="root"> : ce serait une bonne idée de ne pas l'utiliser pour plusieurs raisons. Déjà comme l'a souligné Naholyr, on doit modifier la vue, et normalement, la vue n'a pas à être modifier pour ce genre de "détails". De plus, la balise <base /> a été mise en service à partir de HTML 3.2 (sauf erreur), et sera disponible en HTML 5 (d'après les drafts actuelles), mais pas en XHTML 2.0 ! Alors attention.
Les drafts sont susceptibles de changées, mais la draft sur ce sujet est déjà stable, alors il y a peu de risque que ça change (mais ne vendons pas la peau de l'ours avant de ...).

La méthode PHP avec define et cie. C'est à mon avis, la meilleure solution. C'est peut être un brin plus ch***t pour écrire tes liens, mais tu gagnes en maintenance une fois de plus. Et cette méthode est plus légère que la précédente.

Pour Hubert Roksor, quand un URL n'est pas relatif, il est absolu. Les RFCs disent path-absolute dans ce cas, c'est assez explicite je pense :)

par Klomac » 30 juin 2007, 12:00

Oui en fait c'est une erreur de ma part, j'utilise cette balise pour remédier à certains bugs quand j'utilise l'URL rewriting et des liens relatifs ;)

par naholyr » 29 juin 2007, 19:25

Un simple fichier server-config.php cela évite de mélanger les choses
<?php
define('DOC_ROOT', '/var/www/paamayim-nekudotayim/');
define('HTTP_ROOT', 'http://www.paamayim-nekudotayim.com/');
Dans une application il y a la vue, les contrôleurs, le modèle, la configuration. Seule la partie "configuration" devrait être éditée lors d'un changement de serveur. Inclure un "base href" c'est modifier la vue, et mixer la partie vue et configuration. Je suis pas fan ;)

par Snipy » 29 juin 2007, 14:53

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.
ok !

Tu le stock dans une simple variable ou tu utilises ce que disais Klomac
<base href="/Nevrus" />

par AB » 28 juin 2007, 23:50

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.
Ah oui, j'ai compris pourquoi je n'avais pas saisi tout de suite ta réponse. Comme Snipy ne connaissait peut-être pas cette méthode, je me suis mis à sa place et à la suite de l'étape de la création des fichiers de config, j'attendais : "Seuls ces fichiers sont donc différents en local et sur le serveur distant".

Oula, je me mets à raisonner comme un script, et je bug car je ne comprends plus les sous-entendus :? Faudra que je me remette un peu au piano pour faire fonctionner la touche humanisation :lol:

par naholyr » 28 juin 2007, 21:51

Heu.. tu ne voulais pas dire "Et quand je mets le site sur le serveur de prod, il n'y a qu'a modifier ce fichier de config, et ça roule" ?
Non je voulais dire que je copie tout sauf le fichier de config. Si j'envoie le fichier de config avec le reste, forcément il faut le remodifier pour le serveur donc c'est idiot autant ne pas l'inclure :) c'était juste ça que je précisais.

par AB » 28 juin 2007, 21:04

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.
Heu.. tu ne voulais pas dire "Et quand je mets le site sur le serveur de prod, il n'y a qu'a modifier ce fichier de config, et ça roule" ?

J'utilise le même principe + également pour mes connexions bdd :wink:

par Klomac » 28 juin 2007, 20:54

Oui, tant qu'à faire ;)

par naholyr » 28 juin 2007, 20:46

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.

par Klomac » 28 juin 2007, 19:57

Dans ce cas tu mets /includes/design.css et tu ajoutes la balise suivante dans ton <head> :

<base href="/Nevrus" />

par Snipy » 28 juin 2007, 16:32

En effet ça marche, mais "nevrus" c'ets le nom de mon dossier qui regroupe toute mes pages (car travail en local là)
Mais par la suite quand j'uploaderais sur mon serveur, il n'y aura plus le dossier nevrus .

Une modifications des pages sera donc obligatoire :?

par Klomac » 28 juin 2007, 16:08

OK donc en local j'ai mis

href="http://127.0.0.1/Nevrus/includes/design.css" />

Ce qui marche effectivement bien.
Mais il n'y a pas plus simple ou du moins plus universelle ?
Car quand je vais uploader tout ça je serais obliger de modifier en fonction du nom de domaine ou autre.
Pas href="http://127.0.0.1/Nevrus/includes/design.css"

mais

href="/Nevrus/includes/design.css"

par fab » 28 juin 2007, 16:00

Faut faire en sorte que tes fichiers appelés change pas de répertoire :) ( tu peux faire des fichiers cons genre des simple alias à la racine )

par Snipy » 28 juin 2007, 15:43

OK donc en local j'ai mis

href="http://127.0.0.1/Nevrus/includes/design.css" />

Ce qui marche effectivement bien.
Mais il n'y a pas plus simple ou du moins plus universelle ?
Car quand je vais uploader tout ça je serais obliger de modifier en fonction du nom de domaine ou autre.