Pour continuer là-dessus, le chemin que tu mentionnes dans les
configurations Apache pour ce genre de variables n'est en rien relatif au
"document root", mais en absolu sur le fs.

Les seules limitations rencontrées sont alors les droits en lecture sur ce
fichier et/ou les éventuelles restrictions de répertoires dans ta
configuration PHP (open_basedir par exemple).


-----Message d'origine-----
De : dev-boun...@list.dotclear.org [mailto:dev-boun...@list.dotclear.org] De
la part de Christopher Crouzet
Envoyé : dimanche 1 septembre 2013 14:27
À : dev@list.dotclear.org
Objet : [Dotclear Dev] REDIRECT_DC_RC_PATH

Hello!


Est-ce que quelqu'un s'est deja servi de cette variable ?

Mon but serait de mettre le dossier `dotclear` quelque part sous mon www/ et
de faire en sorte de le laisser intact, comme un vrai clone de ce qu'il y a
sur le repo mercurial.

C'est facile de definir de nouveaux chemins externes de plugins et cache
grace a `DC_PLUGINS_ROOT` et `DC_TPL_CACHE`, ainsi que les chemins public et
themes directement dans l'admin de Dotclear, mais par contre pour le
`config.php`, c'est moins evident.

J'ai vu que la variable `$_SERVER['REDIRECT_DC_RC_PATH']` semblait justement
faire ca, donc je suis alle voir mon fichier .htaccess et y ai rajoute :
SetEnv REDIRECT_DC_RC_PATH /config.php

Le truc c'est qu'ensuite Dotclear va faire un `require` la-dessus, et donc
ca va marcher seulement si le fichier .php qui est appele se trouve sur le
document root. Donc ca marche bien quand on ouvre le fichier `index.php`du
blog, mais ca ne marche plus quand on essaye d'ouvrir l'admin.

Il y a 2 solutions :
- soit je me demerde dans le .htaccess a faire un truc du genre `SetEnv
REDIRECT_DC_RC_PATH %{DOCUMENT_ROOT}/config.php`, mais non seulement ca me
semble etre un peu du hack parceque `/config.php` devrait justement deja
representer un chemin relatif depuis le root, mais surtout j'arrive pas a le
faire marcher... la valeur %{DOCUMENT_ROOT} (et une autre infinite de
variations que j'ai teste) ne sont pas converties en chemin, et PHP recoit
le string %{DOCUMENT_ROOT} tel quel.
- soit dans le code de Dotclear on rajoute manuellement le DocumentRoot, ce
qui me semble etre mieux. Et pour pas casser l'ancien comportement, le
fichier prepend.php serait modifie dans ce genre la :

if (isset($_SERVER['DC_RC_PATH'])) {
  define('DC_RC_PATH',$_SERVER['DC_RC_PATH']);
} elseif (isset($_SERVER['REDIRECT_DC_RC_PATH']) &&
isfile($_SERVER['REDIRECT_DC_RC_PATH'])) {
  define('DC_RC_PATH',$_SERVER['REDIRECT_DC_RC_PATH']);
} elseif (isset($_SERVER['REDIRECT_DC_RC_PATH']) &&
isfile($_SERVER['DOCUMENT_ROOT'].$_SERVER['REDIRECT_DC_RC_PATH'])) {
  define('DC_RC_PATH',$_SERVER['DOCUMENT_ROOT'] .
$_SERVER['REDIRECT_DC_RC_PATH']);
} else {
  define('DC_RC_PATH',dirname(__FILE__).'/config.php');
}


Des avis ?
Christopher.
--
Dev mailing list - Dev@list.dotclear.org -
http://ml.dotclear.org/listinfo/dev


-- 
Dev mailing list - Dev@list.dotclear.org - http://ml.dotclear.org/listinfo/dev

Répondre à