DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:config:safemodehack

Paramètre de configuration: safemodehack

Ceci tente de résoudre le bug 179 où DokuWiki ne peut écrire dans les répertoires qu'il a créés lui-même. Pour ce faire, utilisez FTP pour vous connecter à votre serveur et créer le répertoire de cette façon. Il nécessite le module PHP FTP installé sur le serveur.

  • Type: Booléen
  • Défaut: 0

Comme son nom l'indique, il s'agit d'un hack et est non recommandé. Le mode sans échec (SafeMode) lui-même est un paramètre que même les développeurs de PHP ont en horreur, et il sera supprimé des futures versions de PHP en une fois pour toutes les versions.

Si vous le pouvez, désactivez le SafeMode de PHP au lieu d'utiliser ce hack. Beaucoup d'hébergeurs le désactiveront pour votre site si vous leur demandez gentiment.

Quand utiliser ce hack

Sur certains hôtes avec des paramètres restrictifs, il existe des limitations sur les fonctions du système de fichiers PHP, p. Mkdir () etc. Pour être plus précis, les paramètres sont les suivants:

  1. safe_mode = On
  2. safe_mode_gid = Off

Une première indication de la nécessité du hack SafeMode est la rencontre de messages d'erreur comme ceci:

Writing ....../data/cache/9/9243162ecf6295fc6a1c487ca46c20fe.i failed

Le répertoire …./data/cache/9/ existe 1) mais il ne sera pas accessible en écriture par DokuWiki. Il s'agit d'un symptôme typique de la restriction de mode sans échec. DokuWiki ne peut pas écrire dans les répertoires créés par lui-même.

Usage

Pour l'activer, réglez safemodehack sur 1 et entrez votre identifiant FTP dans le fichier de configuration. (C'est-à-dire conf/local.php) ou simplement aller à Gestionnaire de configuration, qui offre une excellente interface graphique pour modifier les paramètres de DokuWiki.)

Si vous avez déjà essayé de faire fonctionner DokuWiki sans Option Safemodehack, vous devez supprimer les sous-répertoires de /data/cache pour les faire recréer avec les UID corrects pour que tout fonctionne.

Exemple de Configuration:

$conf['safemodehack'] = 1;
$conf['ftp']['host'] = 'localhost';
$conf['ftp']['port'] = '21';
$conf['ftp']['user'] = 'user';
$conf['ftp']['pass'] = 'password';  // texte brut (voir dessous)
$conf['ftp']['root'] = '/home/user';

Vous devrez peut-être assouplir les autorisations pour les répertoires pour vous assurer que le serveur Web est autorisé à écrire dans les nouveaux répertoires. Le safemodehack peut ne pas résoudre le problème, puisque votre utilisateur FTP a probablement un UID différent que le serveur Web. Modifier l'option dmode de 0755 à 0777 peut s'évérer nécessaire.

Avertissement de sécurité

L'utilisation de cette méthode nécessite que votre mot de passe ftp soit stocké en clair dans un texte brut, ceci dans l'un des fichiers de configuration de DokuWiki. Ces fichiers peuvent être lisibles. Depuis la version 2009-01-26 de DokuWiki, le mot de passe peut être obfusqué 2) en étant non chiffré. La définition du mot de passe à l'aide de la page des paramètres admin/config se fera automatiquement.

Quelle valeur utiliser pour l'option racine

Lorsque DokuWiki tente de créer un répertoire, il détache la partie racine du chemin avant de le créer sur FTP. Pour ce faire, il a besoin d'informations sur l'environnement qu'il trouvera sur votre serveur FTP.

Imaginons que vous avez installé DokuWiki dans /home/user/htdocs/dokuwiki avec /home/user/htdocs/dokuwiki/data comme répertoire de données. Vous êtes ''chrooté'' à '/home/user', ce qui signifie que créer un répertoire /foo via FTP va réellement résulter en un répertoire /home/user/foo sur le serveur. Pour dire à DokuWiki cela, vous devez paramétrer $conf['ftp']['root'] à /home/user/.

Ainsi, si DokuWiki essaie de créer le répertoire /home/user/htdocs/dokuwiki/data/mynamespace le hack SafeMode dépouille la partie racine, résultant en htdocs/dokuwiki/data/mynamespace et ce répertoire sera créé via FTP.

Si votre serveur FTP n'utilise pas de chroot (par exemple, vous pouvez aller à la racine par la commande cd / du serveur Web), vous pouvez laisser l'option racine vide.

Pour trouver l'endroit où vous êtes chrooté dans espace hébergé, vous avez d'abord trouver le chemin absolu dans lequel DokuWiki réside. C'est habituellement quelque chose comme /Srv/www/htdocs/votre-ftp-username/html/dokuwiki, mais vous pouvez trouver cette information en dehors, par exemple en vérifiant l'environnement PHP gràce à l'utilisation de ce court script:

<?php phpinfo(); ?>

Cela permet d'imprimer les paramètres PHP du serveur Web sur l'écran où vous trouverez tous les détails. Lorsque vous avez le chemin absolu, connectez-vous à votre compte FTP et comparer ce que vous voyez là avec ce chemin. Essayez de vous déplacer vers les répertoires supérieurs jusqu'à ce que vous atteignez le sommet. Regardez maintenant quelle est la partie du chemin absolu que vous pouvez voir. Si vous êtes chrooté vous pourrez probablement voir uniquement le répertoire html. Si par exemple, le nom d'utilisateur pour votre espace d'hébergement est web123 et si vous êtes chrooté à /srv/www/htdocs/web123, vous devez paramètrer la valeur racine à:

$conf['ftp']['root'] = 
'/srv/www/htdocs/web123';

Notes

  • Mon FAI a ces deux paramètres safe_mode (voir un de mes sites pour php_info), et je crée des pages sans avoir besoin du hack. Cela peut dépendre d'autres variables également (mathiasm).
    • Réponse possible: La principale différence entre mes paramètres non fonctionnels et ceux de votre FAI est que dans votre cas PHP est exécuté en tant que CGI (API serveur: CGI) où comme dans mon cas PHP est configuré en tant que module Apache2 (API serveur: Apache 2.0 Handler). Peut-être que c'est la cause qui rend votre installation fonctionnelle malgré les paramètres safe_mode?
  • J'ai fait un “mkdir 1 2 3 4 5 6 7 8 9 0 a b c d e f” dans data/cache puis leur ai mis les droits en 777 (chmod 777). Cela semble aussi une manière de contourner le problème.
    • Ceci n'est pas vraiment une solution, car DokuWiki a également besoin de créer des sous-répertoires pour les namespaces. Avec la méthode indiquée, vous serez dans l'impossibilité de créer des sous-répertoires.
    • Evidemment, si vous n'avez pas besoin de sous-répertoires, c'est une solution!
  • Même si vous utilisez le hack SafeMode, les fonctions disabled php 3) peuvent casser la sortie PHP.
  • Le hack SafeMode ne peut fonctionner que si vous avez la possibilité d'utiliser le service ftp. Je l'ai essayé avec seulement des webdavs disponibles. Ni le ftp-hack ni une configuration webdav semblable ne fonctionnaient. Alors je vais devoir essayer autre chose.

Voir aussi

1)
vérifiez le, s'il n'existe pas, vous avez probablement un problème différent
2)
ce n'est pas destiné à sécuriser mais permet tout simplement d'éviter de le laisser voir
3)
vérifiez la valeurdisable_functions dans phpinfo dans la sortie
fr/config/safemodehack.txt · Dernière modification : 2016-12-11 21:19 de Digitalin

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki