Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bonjour
notre blog associatif sous DC1 http://www.pcf-gennevilliers.org est hébergé chez NFrance et fonctionne parfaitement.
Nous souhaitions passer sous DC2.
Après avoir activé le php5 je parviens à installer le blog et à entrer dans l'interface administrateur.
Lorsque je souhaite accéder au blog, je reçois le message
Something went wrong: Unable to create cache file
Quelqu'un sait-il comment procéder ?
Les prérequis sont remplis par l'hébergeur.
le safe mode est sur ON chez cet hébergeur, et la désactivation n'est pas à l'ordre du jour. Une valeur particulière du safe mode ne fait pas partie des prérequis.
Merci, bonne journée à tous
Hors ligne
Bonjour et bienvenue,
en premier lieu, vérifie les droits sur le dossier cache de Dotclear (n’hésite pas à le mettre en 777) et dis-nous si ça fonctionne mieux. Pour le safe mode, je ne sais pas à quoi ça sert exactement, mais j’en ai souvent lu du mal ici ;-)
RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?
Hors ligne
Bon j'ai recommencer une installation de zero en demandant au service technique de Nfrance de me dire comment activer proprement php5
sa reponse et :
creer un .htaccess contenant le code suivant dans votre répertoire à exécuter en php5 :
<IfModule mod_fastcgi.c>
AddHandler fastcgi-php5 .php
Action fastcgi-php5 /cgi-bin/php5
</IfModule>
ce que j'ai fait.
Maintenant j'ai une autre erreur
Unable to create directory.
Something went wrong while loading template file for your blog.
qui a un air de déjà vu sans que je trouve de réponse claire a cette erreur
Vous avez quelques conseils ?
merci
Hors ligne
On est toujours a priori dans un problème sur les droits d’écriture sur le dossier cache. Si ça persiste à ne pas fonctionner en 777, essaie de remplacer, dans inc/config.php
// Template cache directory
define('DC_TPL_CACHE',dirname(__FILE__).'/../cache');
par
// Template cache directory
define('DC_TPL_CACHE','/tmp');
et dis-nous ce que ça donne :-)
RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?
Hors ligne
cette fois il me repond que /tmp is not a valid directory tout simplement parce qu'il ne le trouve pas vu que cela enleve dirname(__FILE__). qui conduit jusqu'au directory contenant le config.php pour qu'il trouve ce directory il faudrait que je le cree dans inc. Si je le fais, je retombe sur la meme erreur, ce qui est logique, le directory /tmp ayant les meme droit d'ecriture que le cache original.
Hors ligne
le répertoire /tmp est le répertoire temporaire par défaut des systèmes *nix, il est donc présent sur de nombreux serveurs web (mais pas toujours accessibles par les utilisateurs).
Tu n’as pas accès au réglage des droits sur le dossier cache par ftp ? Parce que c’est ce que je te suggère de faire depuis le début (et tu ne m’as pas répondu clairement sur ce point)…
RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?
Hors ligne
je suis sur un serveur mutualisé. Mes acces demarre la ou commence mon espace c'est a dire a /home/mon_repertoire.
je n'ai pas acces juqu'a la racine et au /tmp systeme etc...
Hors ligne
Et pour les droits du répertoire cache (qui lui est dans le dossier dotclear) tu as regardé ? J’insiste…
RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?
Hors ligne
Si on cherche l'endroit ou est generer l'erreur on arrive a l'appel de la fonction
url->getDocument()
dans le fichier public/prepend.php
cette fonction est elle meme definie dans le fichier inc/clearbricks/url.handler/class.url.handler.php
je continue.....
Hors ligne
si on poursuit la quete de l'erreur on trouve que celle ci est generer au niveau de l'appel a la fonction
call_user_func
or apres avoir consulter le net, la syntaxe d'appel a cette fonction a ete modifié a partir de la version 5.3 de php (cf http://fr3.php.net/call_user_func)
mon hebergeur est sur une version anterieure , la 5.2.1
si les programmeur de dotcleatr on adopter le nouvelle syntaxe je l'ai dans l'os.
il serait interessant d'avoir un avis des programmeur ou alors que ceux qui ont reussi a installer nous disent quelq version de php est utilisée chez leur hebergeur.
Merci
Hors ligne
rhackert : je me suis permis d'envoyer un email à l'adresse email enregistrée dans ce forum pour te demander quelques informations un peu trop sensibles pour apparaître ici. Rassure-toi il n'y a aucun risque, c'est juste de la prudence.
- les règles du forum : http://forum.dotclear.net/viewtopic.php?id=39494
- la galaxie de Dotclear 2 : http://fr.dotclear.org/documentation/2.0/links
Hors ligne
Ok,
on reprend ici. C'est visiblement un problème avec safe_mode, comme dans ce précédent message. J'en ai parlé à Olivier sur le Trac pour savoir si ça pouvait être la cause du problème ou non.
- les règles du forum : http://forum.dotclear.net/viewtopic.php?id=39494
- la galaxie de Dotclear 2 : http://fr.dotclear.org/documentation/2.0/links
Hors ligne
rhackert, aucun risque qu'on utilise des syntaxes propres à PHP 5.3, on essaye de rester compatibles 5.0 pour le moment :)
Je vais regarder demain comment ça se comporte en safe_mode. Je ne peux pas garantir de résoudre ce problème si je l'identifie à ce stade du dev. Mais j'en prends note :)
La seule difference entre un fou et moi, c'est que je ne suis pas fou. (Dali)
Hors ligne
olivier, je viens de regarder rapidement les effets du safe_mode activé :
* il est impossible de se servir du répertoire /tmp comme répertoire temporaire car /tmp appartient à root hors le safe_mode "Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté" (documentation PHP)
* avec la configuration par défaut (dirname(__FILE__).'/../cache') et le répertoire cache avec les droits 777 :
** ça fonctionne si le propriétaire et l'utilisateur d'Apache sont les mêmes
** ça affiche "Unable to create directory." si on change le propriétaire (mais pas les droits, je précise)
C'est conforme à la documentation PHP. J'en conclue que le problème de rhackert correspond au dernier cas ...
rhackert : j'ai encore un petit truc à te demander s'il-te-plaît : crée un fichier plop.php et colles-y ceci :
<?php mkdir(dirname(__FILE__).'/repertoiretest'); ?>
Ensuite transfère ce fichier sur ton hébergement et accèdes-y avec ton navigateur. Qu'est-ce qui s'affiche ? Est-ce qu'un répertoire appelé repertoiretest est créé au même niveau que ce fichier sur ton hébergement ?
- les règles du forum : http://forum.dotclear.net/viewtopic.php?id=39494
- la galaxie de Dotclear 2 : http://fr.dotclear.org/documentation/2.0/links
Hors ligne
la reponse :
le fichier.php a ete place dans une repertoire ouvert en ecriture 777
il y eu creation du repertoire quelques soient les droits que plop.php avait 555 554 544.... et meme 004
le repertoire "repertoiretest" crée avait des droits à 755
voila, j'espere que ca peut aider....
Hors ligne
Merci Moe :)
On pourrait peut-être faire un bête plugin pour créer des répertoires à la raçine d'un hébergement, pour ce cas précis ?
La seule difference entre un fou et moi, c'est que je ne suis pas fou. (Dali)
Hors ligne
rhackert : ok, maintenant on va faire la même chose dans le répertoire /dotclear/ : efface le répertoire cache puis on crée un fichier create-cache.php et on y insère ceci :
<?php
$dir = dirname(__FILE__).'/cache';
if (!is_dir($dir))
{
mkdir($dir);
echo "cache créé";;
}
?>
Tu vas sur /dotclear/create-cache.php avec ton navigateur et ça devrait afficher "cache créé" et là le blog devrait être accessible si dans /dotclear/inc/config.php il y a
define('DC_TPL_CACHE',dirname(__FILE__).'/../cache');
olivier : si j'ai bien compris le problème, le safe_mode bloque la création des répertoires à cause des UID différents des répertoires (qui doivent correspondre au login du FTP) et de Apache. Pour le répertoire cache c'est possible de l'effacer et de le recréer car il est vide mais pour les autres répertoires c'est plus compliqué. Ta solution c'est d'installer les répertoires cache, plugins, themes, public en dehors de Dotclear avec un script ?
Le truc con, c'est que si on crée un plugin il pourra peut-être pas être installé à cause du safe_mode ... je crois déjà avoir vu le cas sur le forum : il y avait la même erreur et il fallait passer par le FTP pour installer un plugin.
- les règles du forum : http://forum.dotclear.net/viewtopic.php?id=39494
- la galaxie de Dotclear 2 : http://fr.dotclear.org/documentation/2.0/links
Hors ligne
je viens de faire le test, l'erreur reste la même.
directory cache créé avec droit 777 mais ca n'a rien changé
car le proprietaire n'est pas le meme (65534 proprietaire) , le groupe lui par contre est le meme (1057 dans mon cas)!
je viens de remarquer que c'est aussi le cas pour le "repertoiretest" (voir un peu plus haut)
donc si ca vient bien du proprietaire il faut pouvoir imposer.
Comme j'ai uploder tout dotclear2 via filezilla tous les proprietes sont au niveau 1057(proprietaire et groupe), c'est comme comme si je créeais a la main un répertoire.
Hors ligne
Mince, je pensais qu'on était sur la bonne voie.
Il reste la solution d'olivier : créer à la racine. Refais les mêmes manips que dans le message #18 mais à la racine de l'hébergement et non dans /dotclear/ et en mettant ça dans le fichier de config :
define('DC_TPL_CACHE',dirname(__FILE__).'/../../cache');
C'est possible que ça ne change rien mais bon, ça ne coûte rien d'essayer ...
- les règles du forum : http://forum.dotclear.net/viewtopic.php?id=39494
- la galaxie de Dotclear 2 : http://fr.dotclear.org/documentation/2.0/links
Hors ligne
je ne veut pas avoir l'air d'insister mais cette fonction call_user_func( ) , elle fait quoi exactement? les argument envoyer ne doivent pas etre bon puisque c'est elle qui génère l'erreur. Elle cherche à écrire dans des repertoires ?
Hors ligne
À titre personnel (je ne suis pas un expert) je n'ai pas de solution à te proposer, je suis désolé. Apparemment chez NFrance il faut payer pour désactiver le safe_mode alors que la majorité des hébergeurs le désactivent. Le fichier de configuration de PHP indique que cette mesure est une mauvaise mesure de protection :
; Safe Mode
; NOTE: this is considered a "broken" security measure.
Si tu es en fin de contrat, je te suggère d'aller chez un hébergeur compatible avec Dotclear. Sinon tu peux utiliser Dotclear 1 sur ton hébergement.
- les règles du forum : http://forum.dotclear.net/viewtopic.php?id=39494
- la galaxie de Dotclear 2 : http://fr.dotclear.org/documentation/2.0/links
Hors ligne
call_user_func permet d'appeler une fonction à partir d'une variable. C'est la fonction appelée par call_user_func qui pose problème. Je rejoins pas mal Moe sur le safe mode, les hébergeurs un minimum sérieux n'ont pas le safe mode activé, les autres sont plus ou moins des guignols qui n'ont visiblement jamais configuré un grsec mais tout ceci est accessoire et ne résout pas ton problème, j'en conviens :)
La seule difference entre un fou et moi, c'est que je ne suis pas fou. (Dali)
Hors ligne
Si donc le diagnostic est que c'est bien le safe_mode qui pose probleme, dans ce cas je vous propose d'ajouter dans les prerequis que le safe_mode doit être sur off.
Du reste le safe_mode aura disparu avec le version 6 de php....
bonne continuation
RH.
Hors ligne
Vous n'êtes pas identifié(e).