[Framaforms] problème installation

Pas de soucis, merci de tes retours en tout cas !
On a un travail à faire sur la doc, et c’est vrai que l’installation est pas facile. On travaille à la faciliter en ce moment.

Super :+1:dans cette logique un docker pourrait être intéressant. Je sais pas ce que vous en pensez.

Adieu a totes,
Je me permets d’intervenir car je suis la discussion (essayant d’installer Framaforms sur un serveur mutualisé). Pas seulement une image Docker pour mon cas.
Je constate qu’il existe la possibilité d’installer en 1 clic déjà Framadate via Softaculous (c’est le cas dans les hébergements o2switch.fr). Si c’était possible de faire de même pour Framaforms, ça permettrait de multiplier les instances facilement.
Cordialement,
Thierry

Docker, Softaculous, Yunohost, il y aurait plein de solutions pour packager le bazar et faciliter l’installation, mais ça demanderait beaucoup de temps pour maintenir le paquet dans le temps. Et c’est un temps que Framasoft n’a malheureusement pas.
Pour le moment l’idée est plutôt d’essayer de faciliter l’installation avec ce que propose Drupal (distributions, profils d’installation, etc), et d’améliorer la doc. Mais si quelqu’un se sent de proposer un package, libre à lui ou elle !

1 « J'aime »

Bonjour,

D’abord, merci bcp pour ces outils et pour le travail fourni.
J’avais essayé il y a quelques mois d’installer framaforms à partir des infos du README et je n’étais pas arrivé à une solution fonctionnelle (et désolé de ne pas avoir remonté le problème à l’époque, merci @emilie de l’avoir fait).
C’est cool d’avoir repris le travail sur le sujet et clarifié le README et le Wiki.

J’ai repris là ou @emilie s’est arrêtée en reprenant l’installation. J’ai utilisé Apache au lieu de Nginx. Je testerai avec Nginx mais je ne pense pas que le problème vienne de là (Apache utilise aussi le user www-data).

  • Selon moi, il reste une coquille dans la procédure d’installation dans le Wiki

    • dans la section 4 Create a private folder:
    git clone https://framagit.org/framasoft/framaforms.git`
    chown -R www-data:www-data sites/default/files
    chmod -R 600 sites/default/files
    cd ..
    mkdir framaforms_private
    chown -R www-data:www-data framaforms_private
    chmod -R 200 framaforms_private
    

    Il y a un ` en trop à la fin de la ligne du git clone
    Sans ce `, git clone va cloner dans un sous-dossier framaforms, donc la suite des commandes ne passe pas. Comme juste au dessus il est indiqué de se mettre dans le « web directory », je suggère de cloner localement ainsi:
    git clone https://framagit.org/framasoft/framaforms.git .
    et le reste des commandes passera

  • Malgré ça, j’ai toujours des erreurs. Lorsque je me connecte la 1ère fois, j’ai ça


    Voici les erreurs remontées dans mon log Apache error.log

    [Tue Mar 24 17:53:32.605085 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/sites/all/modules/entity/includes/entity.controller.inc on line 259
    [Tue Mar 24 17:53:32.605338 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/sites/all/modules/entity/includes/entity.controller.inc on line 259
    ...
    [Tue Mar 24 17:53:32.609653 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 56
    [Tue Mar 24 17:53:32.609696 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Notice:  Trying to get property of non-object in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 61
    [Tue Mar 24 17:53:32.609704 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Warning:  Attempt to assign property of non-object in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 61
    [Tue Mar 24 17:53:32.609708 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Notice:  Trying to get property of non-object in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 62
    [Tue Mar 24 17:53:32.609712 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Warning:  Attempt to assign property of non-object in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 62
    [Tue Mar 24 17:53:32.609715 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Notice:  Trying to get property of non-object in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 63
    ...
    [Tue Mar 24 17:53:32.612788 2020] [:error] [pid 852] [client 10.0.2.2:57828] PHP Warning:  Attempt to assign property of non-object in /var/www/html/modules/rdf/rdf.module on line 412
    ...
    [Tue Mar 24 17:53:32.859377 2020] [:error] [pid 854] [client 10.0.2.2:57830] PHP Warning:  Attempt to assign property of non-object in /var/www/html/modules/rdf/rdf.module on line 412, referer: http://localhost:8890/
    [Tue Mar 24 17:53:32.957726 2020] [core:error] [pid 853] (13)Permission denied: [client 10.0.2.2:57832] AH00035: access to /sites/default/files/Framasoft_Logo.svg.png denied (filesystem path /var/www/html/sites/default/files/Framasoft_Logo.svg.png) because search permissions are missing on a component of the path, referer: http://localhost:8890/
    

    Une idée?

    • Dans la section 1 prerequisites:
      J’ai essayé de continuer malgré mes problèmes, en ne configurant pas la bdd dans le settings.php, je suis arrivé sur la page de configuration de Drupal. Dans la phase « Verify Requirements », une erreur est remontée demandant d’installer les modules PHP DOM, SimpleXml, Xml et gd.

Bienvenue Aym,
J’ai exactement le même message d’erreur avec le message « Le fichier n’a pas pu être créé. » qui se répète. Voir ce fil aussi : [Framaforms] Installation sur serveur mutualisé o2switch?
Cordialement,

Thierry

Salut,
J’avais les mêmes erreurs PHP mais d’après thelem ce n’est pas forcément bloquant. Par contre le problème doit être ça :

[Tue Mar 24 17:53:32.957726 2020] [core:error] [pid 853] (13)Permission denied: [client 10.0.2.2:57832] AH00035: access to /sites/default/files/Framasoft_Logo.svg.png denied (filesystem path /var/www/html/sites/default/files/Framasoft_Logo.svg.png) because search permissions are missing on a component of the path, referer: http://localhost:8890

Peut-être que tu peux réessayer la procédure en appliquant ces droits-là pour voir :
https://www.latrach.net/drupal-8-recapitulatif-droit-sur-fichiers-avant-apres-installation

à ta place je tenterais :

chmod 755 sites/default

chmod 644 sites/default/settings.php

chmod 755 sites/default/files

chmod 555 sites/default

chmod 444 sites/default/settings.php

Bon courage

1 « J'aime »

@thelem : tu es vraiment sûr que c’est " framaforms_private" dans la base de données ?

oui c’est ça

733a32373a222f7661722f7777772f6672616d61666f726d735f70726976617465223b => « /var/www/framaforms_private » en utf-8

par contre du coup ton framaforms_private doit être directement à la racine de /var/www @Aym-1, est-ce que c’est le cas ?

Salut,

par contre du coup ton framaforms_private doit être directement à la racine de /var/www @Aym-1, est-ce que c’est le cas ?

Oui c’est bien ce que j’ai.

Peut-être que tu peux réessayer la procédure en appliquant ces droits-là pour voir :
https://www.latrach.net/drupal-8-recapitulatif-droit-sur-fichiers-avant-apres-installation

Ce qui change ici, ce sont les droits 755 sur sites/default/files, puisque j’avais 600 comme documenté dans le Wiki. J’ai donc essayé avec 755.
Lorsque je lance l’application, j’ai toujours

Erreur

Le site Web a rencontré une erreur inattendue. Veuillez essayer de nouveau plus tard.

Mais je n’ai plus les erreurs dessous Le fichier n'a pas pu être créé.

Dans le error.log Apache, j’ai encore les warnings foreach(), mais on ignore donc.
Il me reste les erreurs suivantes

[Tue Mar 24 21:31:08.513382 2020] [:error] [pid 95] [client 172.17.0.1:43302] PHP Notice:  Undefined index: schema_fields_sql in /var/www/html/includes/entity.inc on line 298, referer: http://localhost:8888/
...
[Tue Mar 24 21:31:08.516835 2020] [:error] [pid 95] [client 172.17.0.1:43302] PHP Notice:  Undefined index: schema_fields_sql in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 56, referer: http://localhost:8888/

J’ai aussi oublié de préciser une chose. Lorsque j’importe le sql dans la base, je vois passer quelques erreurs ERROR: role "betaforms" does not exist.

@ThierryM J’ai lu ton fil de discussion aussi. Concernant l’erreur sur le module Polling, j’ai eu le même problème quand dans mes investigations, j’ai essayé une update de Drupal en navigant vers update.php, après avoir mis le paramètre $update_free_access à true dans settings.php car avec tous mes problèmes, je ne peux pas me connecter en tant qu’admin.

Je corrige mon message précédent.
Il suffit de charger la page une seconde fois pour voir apparaitre les erreurs Le fichier n'a pas pu être créé.

J’ai aussi essayé avec Nginx à la place d’Apache. Le problème reste le même.

au cas où, est-ce que tu peux te connecter à la base de données en ligne de commande avec ton utilisateur admin et assigner les objets de betaforms à framaforms_user ? (@thelem me disait que ça n’avait pas d’incidence mais je testerais quand même à ta place)

sudo -u postgres psql
puis
\c framaforms
REASSIGN OWNED BY betaforms TO framaforms_user;
DROP user betaforms

EDIT : en fait ça sert à rien dans ton cas car il n’existe pas. Faudrait le créér avant l’import ou changer le dump sql pour passer les betaforms en framaforms_user.

sed -i « s/betaforms/framaforms_user/g » framaforms.sql

Et rejouer la procédure.

Perso j’avais essayé les deux sans succès mais bon, dans mon cas comme le tuto était faux je créais un repertoire qui s’appelait framaforms_private_files donc ça risquait pas de marcher.

si ça ne suffit pas je tenterais aussi les snippets pour vider à la main le cache dans la base de données :

https://www.drupal.org/docs/7/administering-drupal-7-site/clearing-or-rebuilding-drupals-cache/

après je préfère préciser que je n’ai aucune connaissance particulière de drupal/framaforms et que je n’ai pas réussi à aller au bout du tuto non plus :sweat_smile:

Effectivement une coquille qui venait du markdown, c’est corrigé !

Cool d’avoir un retour d’expérience dessus. Effectivement ça ne devrait pas causer de problème (et je ne pense pas que tes erreurs soient dûes à Apache).

Tes problèmes ne m’ont pas l’air d’être dus à des modules PHP manquants. Tu peux essayer de les installer au cas où mais à mon avis c’est Drupal qui déconne.

Comme @emilie je pense que c’est effectivement cette erreur qui bloque :

[Tue Mar 24 17:53:32.957726 2020] [core:error] [pid 853] (13)Permission denied: [client 10.0.2.2:57832] AH00035: access to /sites/default/files/Framasoft_Logo.svg.png denied (filesystem path /var/www/html/sites/default/files/Framasoft_Logo.svg.png) because search permissions are missing on a component of the path, referer: http://localhost:8890

Est-ce que tu peux confirmer :

  • que le dossier sites/default/files existe et qu’il contient bien des images gif et png ?
  • qu’il a les autorisation en read/write ? quitte à le changer par la suite par sécurité, tente de faire un chmod 777 dessus, histoire de voir.
  • dans le doute, je ferais aussi un chown -R www-data:www-data sur tout ton dossier framaforms et framaforms_private, si tu as copié des choses depuis qui appartenaient à un user différent.
  • que le fichier sites/default/settings.php a bien les autorisation d’exécution

C’est bien /var/www/framaforms_private, pas très flexible du coup, ça pourrait être une idée de rajouter une étape de configuration de ce chemin dans l’installation.

Je reconfirme que ça n’a pas eu d’incidence de mon côté, plus précisément :

  • j’ai créé la BDD avec l’utilisateur postgres, avec la commande sudo -u postgres createdb framaforms (penser à faire un sudo -u postgres dropdb framaforms si ce n’est pas le premier essai)
  • je me connecte à la BDD avec sudo -u postgres psql
  • je donne les bons droits à l’utilisateur framaforms_user que va utiliser Framaforms : GRANT ALL ON DATABASE framaforms TO USER framaforms_user;

Tant que j’ai bien indiqué les bons noms de BDD et d’utilisateur Postgres dans le settings.php ça marche.

+1 pour tenter de vider le cache, Drupal est tellement une usine à gaz que ça aide souvent.

Globalement, j’ai vu que @Aym-1 avait vu les modifs faites sur le README et le wiki, mais pour @emilie et @ThierryM je vous invite à aller voir, ça peut être plus clair maintenant.

Salut

Vu. En fait, je trouve qu’il reste un problème, Si tu fais git clone https://framagit.org/framasoft/framaforms.git depuis /var/www/ ça va te créer un sous-dossier framasoft. Tu ne peux donc pas faire chown -R www-data:www-data sites/default/files juste après. Soit tu cd dans le dossier framasoft, soit tu fais chown -R www-data:www-data framasoft/sites/default/files. Il faut alors adapter en conséquence plus bas (cd .. seulement si tu as cd framasoft avant).

Oui je l’ai fait par précaution depuis longtemps, ça n’a pas aidé.

Je n’ai plus cette erreur. Je pensais que c’était suite au changement de droits sur sites/default/files en 755, mais maintenant, même avec 600 je n’ai plus cette erreur.

Oui c’est bon

J’ai essayé avec 777, même résultat.

Essayé aussi, même résultat

Essayé aussi, même résultat

J’ai essayé avec tout ça en même temps, même résultat.

Je faisais pas ça, mais d’un autre côté, j’importe le dump avec le user framaforms_user, donc je devrais pas avoir besoin.
J’ai essayé qd même dans le doute, mais ça n’a pas changé le résultat.
D’ailleurs, pour ceux qui lirons plus tard. la bonne syntaxe est GRANT ALL ON DATABASE framaforms TO framaforms_user; (sans le USER).

J’ai essayé ça aussi, même résultat.
J’ai même essayé en navigation privée, rien à faire.

Je n’ai plus les messages Le fichier n'a pas pu être créé. dans la page web, même en la rechargant. Je sais pas dire pourquoi.

Enfin, pour info, je déploie tout ça dans un conteneur Docker dont je créé l’image à partir d’un Dockerfile que j’ai fait (je pourrais envoyer le Dockerfile quand ça fonctionnera). Donc pour chaque test, je supprime le conteneur et je l’instancie de nouveau pour être sûr d’avoir un truc propre.
J’ai essayé de déployer dans une VM aussi pour être sûr que c’était pas une question de volumes non montés ou de droits dans le conteneur. Pas mieux.

@Aym-1 : et donc ça ne marche toujours pas mais tu n’as plus le message « le fichier n’a pas pu être créé », tu as quoi dans les logs ? Toujours pareil ?

Attention au chmod 777 pour tester, de souvenir sur Apache ça met le site en erreur 500 (je sais pas pour nginx par contre)

J’ai joué un peu avec les permissions sur settings.php, sur framaforms_private, et sur sites/default/files.

  • Avec la conf du wiki:

    • 664 sur settings.php (ce sont les permissions qui sont sur default.settings.php lorsqu’on clone le projet, et je fais un cp -p pour garder les même permissions)
    • 200 sur framaforms_private
    • 600 sur sites/default/files

    j’ai la page de mon message précdent (je suis nouveau, je peux mettre qu’une image par message :sob:)
    Je n’ai plus d’erreur Le fichier n'a pas pu être créé. sur la page web, et je n’ai plus l’erreur ci-dessous dans le log error.log d’Apache

    [Tue Mar 24 17:53:32.957726 2020] [core:error] [pid 853] (13)Permission denied: [client 10.0.2.2:57832] AH00035: access to /sites/default/files/Framasoft_Logo.svg.png denied (filesystem path /var/www/html/sites/default/files/Framasoft_Logo.svg.png) because search permissions are missing on a component of the path, referer: http://localhost:8890
    

    Je ne sais pas expliquer pourquoi je n’ai plus ces 2 erreurs alors que c’est ce que j’utilisais les derniers jours.
    J’ai encore les erreurs

    [Wed Mar 25 17:27:42.898339 2020] [:error] [pid 28] [client 172.17.0.1:55110] PHP Notice:  Undefined index: schema_fields_sql in /var/www/html/includes/entity.inc on line 298, referer: http://localhost:8888/
    [Wed Mar 25 17:27:42.916761 2020] [:error] [pid 28] [client 172.17.0.1:55110] PHP Notice:  Undefined index: schema_fields_sql in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 56, referer: http://localhost:8888/
    

    Et surtout j’ai des 500 dans le access.log

    172.17.0.1 - - [25/Mar/2020:17:56:39 +0000] "GET / HTTP/1.1" 500 3181 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    172.17.0.1 - - [25/Mar/2020:17:56:39 +0000] "GET / HTTP/1.1" 500 3181 "http://localhost:8888/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    
  • En modifiant les permissions ainsi

    • 644 sur settings.php
    • 300 sur framaforms_private
    • 700 sur sites/default/files (non récursif)

    j’ai le résultat suivant


    On a toujours une erreur, mais maintenant on a du style :sunglasses:
    Si je ne change pas les permissions à la fois sur framaforms_private et sur sites/default/files, alors je n’obtiens pas ce style.
    Au passage, j’ai enfin des fichiers qui apparaissent dans framaforms_private, alors que ça n’était pas le cas avant.
    Il me reste les erreurs suivantes dans error.log

    [Wed Mar 25 17:45:13.581133 2020] [:error] [pid 29] [client 172.17.0.1:55116] PHP Notice:  Undefined index: schema_fields_sql in /var/www/html/includes/entity.inc on line 298
    [Wed Mar 25 17:45:13.600098 2020] [:error] [pid 29] [client 172.17.0.1:55116] PHP Notice:  Undefined index: schema_fields_sql in /var/www/html/sites/all/modules/rules/includes/rules.core.inc on line 56
    

    Dans le access.log, j’ai encore un 500, mais maintenant j’ai des 200 pour certaines requêtes

    172.17.0.1 - - [25/Mar/2020:17:59:32 +0000] "GET / HTTP/1.1" 500 3766 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    172.17.0.1 - - [25/Mar/2020:17:59:32 +0000] "GET /sites/default/files/js/js_q3CMP21-7KHiTMuakzJZKMRjHn2-4upreXrO9or0L5Q.js HTTP/1.1" 200 3087 "http://localhost:8888/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    172.17.0.1 - - [25/Mar/2020:17:59:32 +0000] "GET /sites/default/files/css/css_DkF9LfX2sqAIR5wPcMd1Gy64F9aF9sFIkeQZ5cxi9QQ.css HTTP/1.1" 200 709 "http://localhost:8888/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    172.17.0.1 - - [25/Mar/2020:17:59:32 +0000] "GET /sites/default/files/css/css_Ze5kZz5XCEkzR3u4B5AqOrbFtD_Xnaan4LGdokq2ops.css HTTP/1.1" 200 8202 "http://localhost:8888/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    172.17.0.1 - - [25/Mar/2020:17:59:32 +0000] "GET /sites/default/files/js/js_EebRuRXFlkaf356V0T2K_8cnUVfCKesNTxdvvPSEhCM.js HTTP/1.1" 200 41835 "http://localhost:8888/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    172.17.0.1 - - [25/Mar/2020:17:59:32 +0000] "GET /sites/default/files/css/css_2THG1eGiBIizsWFeexsNe1iDifJ00QRS9uSd03rY9co.css HTTP/1.1" 200 616 "http://localhost:8888/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    

    Il reste donc quelque chose auquel le serveur n’arrive pas à accéder

  • J’ai bien sur essayé avec 777 sur settings.php, framaforms_private et sites/default/files (777 « recursive »), et j’obtiens le même résultat qu’au dessus

On est pas loin du compte ! C’est une page d’erreur de Drupal avec le style Framaforms appliqué dessus apparemment, il doit pas manquer grand chose ^^
(Je sais pas si ça marchera ici vu que t’as déjà essayé de vider les caches, mais dans certains cas j’arrive à me débarrasser d’une page d’erreur comme ça en vidant les cache + recharger la page (qui m’affiche encore une erreur) + drush ws pour afficher les logs, ce qui doit rebuild les caches de Drupal au passage => en rechargeant la page une deuxième fois, plus d’erreur ¯_(ツ)_/¯ magie Drupal)

Pour pas récursif ? Drupal doit pouvoir a minima lire et écrire dans sites/default/files/forms pour les fichiers que l’utilisateur upload.

Pour identifier où tu en es de ton installation, tu peux aller voir les logs dans la table watchdog de Postgres, il devrait y avoir du monde dedans.
Par la suite si tu as besoin de logger quelque chose au sein d’un code PHP de Drupal, tu as juste à appeler watchdog('montopic', 'monmessage');.

https://framapic.org ^^

Adieu a totes,
Dans mon installation, je n’ai pas le dossier « forms » :


Est-ce que cela viendrait de là ?

@ThierryM je ne pense pas que ça vienne de là, Fforms ne va se servir de ce dossier que si un utilisateur attache un fichier à un formulaire => pas souvent. C’est normal que tu ne l’ai pas, il est ignoré par le .gitignore.
Il y a aussi des images à lire dans sites/default/imgforms mais le site ne crasherai pas pour ça, et dans ton cas ça a l’air bon.