S’il y a un aspect de Dotclear qui m’a toujours posé problème ce sont bien les réglages des paramètres public_path
et public_url
(ainsi que leurs pendants themes_path
et themes_url
). Réglages nécessaires à partir du moment ou vous choisissez de séparer ou de déplacer le répertoire des médias du ou des blogs que vous gérez sur votre installation.
Si par contre vous n’avez aucune intention de déplacer quoi que ce soit (ni répertoire de médias ou de thèmes) et si vous souhaitez partager avec tous les blogs de l’installation ces deux répertoires, alors vous avez fini la lecture de ce billet.
Pour les autres, voilà en détail et de manière illustrée comment configurer ces paramètres. Deux précisions :
- Ce que je vais expliquer ci-dessous pour le répertoire des médias (communément nommé
public
) est également valable pour le répertoire des thèmes. - Nous conviendrons que le répertoire des médias sera toujours sur le même serveur physique que l’installation Dotclear[1].
La documentation officielle
Voyons ce que nous dit la documentation officielle au sujet des deux paramètres public_path
et public_url
:
- public_path
- Emplacement du répertoire des médias depuis le fichier index.php du répertoire où est installée l’application Dotclear. Le slash final n’est pas nécessaire.
- public_url
- URL du répertoire des médias. Le slash final n’est pas nécessaire.
- Astuce : Vous pouvez utiliser une URL absolue commençant par
http://
, pour servir les médias depuis un sous-domaine par exemple.
Utilisation
Ces deux paramètres ont un usage différent. Le premier, public_path est utilisé en interne par l’application Dotclear et par ses extensions. Le second, public_url est utilisé lorsqu’il faut indiquer sur une page web l’URL d’un média, par exemple celui que vous venez d’insérer dans votre premier billet.
Voyons maintenant comment cela s’illustre sur une installation standard, sachant que le script d’installation règle automatiquement ces paramètres en fonction des éléments fournis pendant l’installation. Imaginons que j’installe Dotclear sur un serveur web. Ce serveur web possède une arborescence de dossier dont un en particulier qui sert de racine au serveur web :
- Dossier FTP correspondant à la racine de mon hébergement :
/var/www/mon-domaine.com/www/
- URL de mon hébergement :
http://mon-domaine.com
(qui pointe en fait sur le répertoire de la ligne ci-dessus)
Imaginons maintenant que j’installe Dotclear dans un répertoire dotclear
(le nom importe peu mais c’est plus pratique pour retrouver ses petits ensuite), je vais avoir quelque chose qui va ressembler à ça question arborescence :
- /var/www/mon-domaine.com/www/ (http://mon-domaine.com)
- dotclear
- admin
- cache
- db
- inc
- locales
- plugins
- public
- themes
- dotclear
Vous constatez que le répertoire dotclear
contient le répertoire des médias nommé public
. Les paramètres mis en place pendant l’installation seront :
- public_path :
public
- public_url :
/dotclear/public
public_path indique comment se déplacer du répertoire dotclear
vers le répertoire public
. Ici, public étant dans le répertoire dotclear
, il suffit de rajouter public
au chemin pour se retrouver dans le répertoire des médias. C’est le cas le plus simple :
public_url indique comment accéder depuis internet (avec un navigateur web) au répertoire des médias. Mon hébergement http://mon-domaine.com
pointe sur le répertoire /var/www/mon-domaine.com/www/
. Pour accéder au contenu du répertoire des médias qui se trouve dans le répertoire public
lui même contenu dans le répertoire dotclear
il faut alors rajouter /dotclear/public/
à l’URL de mon domaine, ce qui donnera finalement l’URL complète http://mon-domaine.com/dotclear/public/
:
Précisions
public_path est habituellement un chemin relatif mais peut tout à faire être un chemin absolu. Dans ce cas il faudra retrouver le chemin complet du genre /var/www/mon-domaine.com/www/dotclear/public
pour le configurer de cette manière. Le /
qui débute ce paramètre indique que c’est un chemin absolu. Dans les autres cas, ce chemin sera ajouté au chemin correspondant au répertoire dotclear
(si c’est le nom utilisé pour votre installation).
public_url commence toujours par un /
sauf s’il s’agit d’un autre domaine (ou sous-domaine). Nous verrons cela plus loin.
Ne mettez jamais de /
final à ces deux paramètres.
Oui mais…
Nous arrivons maintenant aux cas de figure qui sortent de la configuration standard, cas de figure pour lesquels vous avez patiemment attendu d’arriver ici pour enfin savoir comment renseigner ces paramètres en fonction de votre propre configuration.
Personnellement je comprends bien mieux avec des schémas et des exemples, donc je vous propose 5 configurations avec les paramètres idoines pour public_path et public_url. Avec ça nous devrions couvrir tous les cas de figures ou tout au moins avoir de quoi les déduire.
Répertoire public à la racine de l’hébergement
Imaginons que je souhaite utiliser un répertoire des médias placé à la racine et indépendant du répertoire d’installation de Dotclear :
Les paramètres seront alors :
- public_path :
../public
- public_url :
/public
Pour public_path les deux points initiaux permettent de remonter d’un niveau dans l’arborescence du disque, donc à la racine de l’hébergement (/var/www/mon-domaine.com/www/
).
Répertoire public dans un autre répertoire indépendant
Maintenant imaginons que je souhaite placer ce répertoire dans un autre répertoire blogs
placé à la racine et donc toujours indépendant de l’installation Dotclear :
Les paramètres seront alors :
- public_path :
../blogs/public
- public_url :
/blogs/public
Vous remarquerez la seule différence du répertoire blogs
avec le cas précédent.
Je pense qu’avec ces 3 configurations (standard, à la racine, dans un répertoire indépendant) vous pouvez déduire toutes les autres possibilités du moment que vous vous cantonnez au même domaine. Voyons maintenant le cas où le répertoire des médias se trouve servi via un autre domaine (ou sous-domaine). Je précise que nous restons tout de même physiquement sur le même serveur.
Répertoire public dans un autre domaine
Imaginons que vous ayez un domaine particulier pour gérer les médias. Ce domaine, http://mes-medias.com/
, pointant vers le dossier /var/www/mes-medias.com/www/
:
Les paramètres seront alors :
- public_path :
/var/www/mes-medias.com/www/public
- public_url :
http://mes-medias.com/public
Vous constatez que le public_path est un chemin absolu et que public_url est une URL complète. Cela dit j’aurais tout aussi bien utiliser une chemin relatif pour public_path en indiquant ../../../mes-medias.com/www/public
.
Répertoire public dans un autre répertoire d’un autre domaine
Compliquons encore en plaçant ce répertoire des médias dans un autre répertoire nommé blogs
:
Les paramètres seront alors :
- public_path :
/var/www/mes-medias.com/www/blogs/public
- public_url :
http://mes-medias.com/blogs/public
Mettre les médias directement à la racine d’un autre domaine
Simplifions maintenant en plaçant directement les médias à la racine du domaine http://mes-medias.com/
:
Les paramètres seront alors :
- public_path :
/var/www/mes-medias.com/www
- public_url :
http://mes-medias.com
Tout simplement.
Conclusion
Vous devriez maintenant avoir toutes les billes pour adapter ces cas à vos propres configurations et en déduire les paramètres nécessaires. Cependant si vous aviez une configuration remarquable — dans le sens non déductible facilement des cas présentés ici — alors n’hésitez-pas à m’en faire part, je me ferai un plaisir de l’inclure dans ce billet.
Note
[1] Il y a moyen de placer ce répertoire sur un autre serveur mais cela impliquera alors d’installer sur celui-ci une autre installation Dotclear afin de gérer les médias qui s’y trouveront. D’autre part certaines extensions ou thèmes pourront être perturbés dans ce contexte.
1 De Jean-Michel -
Merci pour l’article & les chouettes schémas ;)
2 De Pierre -
Un petit rappel est toujours bon, merci. :)
Pierre
3 De Franck -
Merci pour ces explications extrêmement claire.
Franck
4 De Jessica -
Merci ;-) aussi
5 De Epikoa -
Alors je sais, ça date un peu mais je voudrais bien savoir comment faire. Installer Dotclear partout, je sais faire, mais comment utiliser les images d’un système Dotclear à l’autre ?
6 De Franck -
Pour utiliser des images externes, il suffit d’utiliser le bouton d’insertion d’image externe (il précède celui du sélecteur de média) au moment de l’édition des billets. Il faudra ensuite indiquer l’URL complète de l’image en question, récupèrable avec le gestionnaire de média du Dotclear installé là-bas.
7 De Epikoa -
Merci pour ta réponse !
Du coup, quel est l’intérêt d’installer Dotclear sur l’hébergement externe ? (désolé si la question paraît bête)
De plus, il n’y aura pas d’image dans EntryFirstmage (et c’est ce que je cherche en définitive :-)
8 De Franck -
L’intérêt ? Eh bien simplement de gérer les médias, générer au passage les miniatures si on s’en sert. Après tout dépend de l’usage.
9 De DjO -
Merci !
10 De Gilles -
Bonjour,
Je désespère, je voulais dissocier mes dossiers public et themes sur mon installation locale. J’utilise pour cela Mamp qui est paramétré avec comme répertoire “Document root” le répertoire dotclear contenant mon installation.
J’ai créé au même niveau que le répertoire dotclear un répertoire all-blogs qui contient mes répertoires public et themes.
En résumé, cela se présente ainsi:
/Applications/MAMP/htdocs/dotclear/
/Applications/MAMP/htdocs/all-blogs/themes/
/Applications/MAMP/htdocs/all-blogs/public/
J’ai renseigné comme indiqué dans ce billet les paramètres suivants :
public_path : ../all-blogs/public
public_url : /all-blogs/public
themes_path : ../all-blogs/themes
themes_url : /all-blogs/themes
Les images du répertoire public n’apparaissent ni dans la médiathèque, ni côté publique. Pour les thèmes, c’est un peu différent. Côté publique les thèmes ne sont pas chargés, le site s’affiche tout nu. Mais côté administration les thèmes sont accessibles (!) ce qui me laisse à penser que le paramétrage est bon.
(d’ailleurs j’ai testé de retirer le répertoire all-blogs, je constate que j’ai un message d’erreur “theme not found”. Donc si j’avais mal paramètres, je suppose que j’aurai ce message d’erreur)
D’où cela peut-il venir?
Merci d’avance pour vos éclaircissements.
Gilles
11 De Franck -
Si j’ai bien compris, la racine pour Apache c’est le répertoire dotclear. Du coup il va avoir du mal à servir quelque chose qui est en dehors, all-blogs en l’espèce, a minima pour les URLs publiques (utilisées aussi pour afficher les images côté administration) !
12 De Gilles -
D’accord…
J’ai testé en plaçant le répertoire
all-blogs
à l’intérieur du répertoiredotclear
. Et j’ai renseigné les paramètres comme suit :public-path : all-blogs/public
public-url : /all-blogs/public
themes-path : all-blogs/themes
themes-url : /all-blogs/themes
Les thèmes et le thème actif sont chargés, impecc.! Quant aux images dans
public
, elles sont visibles depuis la médiathèque (côté administration donc), mais elles n’apparaissent pas dans les billets du côté publique…Je suis perplexe :-|
13 De Franck -
Est-ce que les URLs des images dans la source des billets sont correctes ? À vérifier…
14 De mirovinben -
Gilles, si les URLs des images dans la source des billets ne correspondent plus à la nouvelle arborescence, je t’invite à consulter le forum de Dotclear et les manip décrites là.