[Framaforms] problème installation

Salut @thelem,

J’ai enfin une page d’accueil complète :sunglasses:
Il me reste cependant encore un problème: Les liens pour s’authentifier, s’inscrire ou voir les fonctionnalités me retournent tous une erreur 404 Not Found :disappointed:. Une idée?

Pour arriver jusque là, j’ai du reconstruire le registre Drupal, avec quelques pièges sur la route.
Ci-dessous, les étapes pour arriver jusqu’à ce résultat.

# Need sudo to run commands as another user
# Need composer to install Drush
# Need wget to allow Drush to download "Register Rebuild"
sudo apt-get install sudo composer wget

# Install Drush
sudo -u www-data composer global require drush/drush:8.*

# Start postgresql
sudo /etc/init.d/postgresql start

# Clear Drupal cache in DB
for i in cache cache_block cache_field cache_form cache_libraries cache_page cache_path cache_token cache_views cache_admin_menu cache_bootstrap cache_filter cache_image cache_menu cache_panels cache_rules cache_update cache_views_data; do sudo -u postgres psql -d framaforms -c "TRUNCATE $i"; done

# Do the rest as root
sudo -i

# Move to my site's directory
cd /var/www/html

# This commands throws an error. But it is necessary as without this call, I never got the main page even with the rest of the procedure below
/var/www/.composer/vendor/bin/drush ws

# Download the "Registry Rebuild"
/var/www/.composer/vendor/bin/drush @none dl registry_rebuild-7.x

# Rebuild Drupal registry
sudo /var/www/.composer/vendor/bin/drush rr

#Clear Drupal cache
/var/www/.composer/vendor/bin/drush cc all

# Force cache rebuild
/var/www/.composer/vendor/bin/drush ws

Bien joué !
J’avais aussi dû faire ça un moment (mais dans un autre contexte donc ça m’est pas venu à l’esprit), on peut utiliser ce projet D7 aussi.

Pour les 404 il faudrait voir ce que disent les logs Drupal :sweat_smile: Ton drush remarche, donc tu peux poster les logs ?

C’était un problème de configuration nginx.
En plus des changements que j’avais déjà fait dans /etc/nginx/site-available/default, sous location /, j’ai remplacé la ligne

try_files $uri $uri/ =404;

par la ligne

try_files $uri /index.php?$query_string;

Le site de nginx fournit un exemple de conf complet.
Je ne l’ai pas essayé.

J’arrive maintenant à me logger, créer un utilisateur, etc.
Lorsque je créé un formulaire, j’ai un message d’erreur, je n’ai pas encore debuggé. Cependant, je ne sais pas si cela a sa place dans cette question, maintenant que le problème d’installation est résolu.

Salut, @thelem

Tu veux dire que Drupal se lance avec une page d’installation ? (l’url point sur install.php normalement).

C’est exactement ça. Et donc, si l’on suit l’assistant d’installation, le Drupal s’installe correctement, mais évidemment, il n’y a aucun lien avec le style, le module Webform et toutes les autres choses que vous avez paramétré.

Pas sûr que ce soit le markdown… cette erreur me dit quelque chose. Ça règle les erreurs d’enlever les points ?

Ca règle le souci, oui. Si on demande à PHP de checker la syntaxe :

php -l settings.php 
PHP Parse error:  syntax error, unexpected '.' in settings.php on line 761
Errors parsing settings.php

Si on enlève les points, PHP est content.

Je reviens sur les pré-requis. Au niveau de la conf de Nginx, dans le wiki, il est indiqué :

Configure your reverse HTTP proxy in NGINX’s sites-available (more details here), pointing to the downloaded folder and restart NGINX.

Mais aucun lien n’est disponible …

Merci pour les corrections déjà apportées.

Top ! Ce serait effectivement pas mal d’avoir une conf NGINX complète sur le wiki pour éviter ce genre de problème.

Hésite pas à créer un nouveau sujet si tu as besoin d’aide ^^

Normalement avec le dump de la BDD qu’on fournit sur le git on ne passe pas par le procédé d’installation Drupal. Tu as bien importé le dump, comme indiqué ici (deuxième ligne de commande) ?

Effectivement, ça a dû sauter quand j’ai remanié la doc. Je corrige ça. Je voulais pointer vers cette page. C’est une configuration NGINX « classique », qui fait appel à PHP-FPM pour le FastCGI.
Je compléterai prochainement le wiki avec une configuration NGINX-type, pour que ce soit plus clair.

Salut @thelem ,

J’ai continué mes investigations pour résoudre le problème qu’il restait.
Ça va être un peu long, j’ai trouvé plusieurs problèmes.

  • Fonctionnellement, le problème restant après l’installation implique que les utilisateurs ne peuvent pas créer de formulaire, j’obtiens l’erreur suivante:

    Avant même de créer le formulaire, je vois déjà l’erreur suivante apparaitre qd je drush ws

    12213470  07/avr 10:13  php       error     Error: Class 'Drupal\form_builder\FormBase' not found in form_builder_cron() (line 360 of
                                                 /var/www/html/sites/all/modules/form_builder/form_builder.module).
    

    Après la création du formulaire, j’ai en plus l’erreur suivante (toujours avec drush ws)

    12213472  07/avr 10:14  php       error     Error: Class 'Drupal\form_builder\Loader' not found in form_builder_interface() (line 27 of
                                                 /var/www/html/sites/all/modules/form_builder/includes/form_builder.admin.inc).
    

    On voit bien qu’il y a un souci avec le module Drupal « Form builder ».
    Je me suis donc connecté en Admin, et j’ai vérifié la configuration des modules.
    Pour le module Form builder, j’ai les informations Requiert : Chaos tools (activé), Options element (activé), PSR0 (désactivé).
    PSR0 semble requis par plusieurs autres modules, et il est bien désactivé.
    Une fois PSR0 activé, il est bien possible de créer des formulaires :v:

  • Dans la configuration des modules Drupal, je retrouve l’erreur déjà évoquée du module polling indisponible
    Les modules pgbar webform integration (non activé), PGBar webform submission static count (activé mais case à cocher grisée), Progress bar (activé mais case à cocher grisée) et Progress bar block (non activé) indiquent Requiert : Polling (manquant).
    Dans la liste des modules, il n’y a effectivement aucun module Polling (mais il y a un module Poll. Quand je cherche un peu, il semble que Polling n’est dispo que pour Drupal 7, alors que Poll est dispo pour Drupal 8).

  • Une fois que j’ai pu créer des formulaires, j’ai joué un peu avec Framaforms.
    Un problème que j’ai rencontré est l’impossibilité pour un utilisateur, propriétaire d’un formulaire, de supprimer une soumission sur l’un de ses formulaires. En cliquant sur « supprimer », j’obtiens l’écran d’erreur Drupal habituel.
    Un drush ws me retourne l’erreur

    12213678  06/avr 19:36  php       error     PDOException: SQLSTATE[42P01]: Undefined table: 7 ERROR:  relation "webform_confirm_email_queued_emails" does not exist
                                                 LINE 1: DELETE FROM webform_confirm_email_queued_emails
    

    En base, la table webform_confirm_email_queued_emails n’existe pas.

  • J’ai réussi à observer une autre erreur avec drush ws, sans savoir dire exactement dans quelles conditions elle se produit.

    12213681  07/avr 10:40  framafor  notice    PDOException: SQLSTATE[42P01]: Undefined table: 7 ERROR:  relation "framaforms_expired" does not exist
                             ms                  LINE 2:         insert into framaforms_expired (nid)
    

    En base, la table framaforms_expired n’existe pas.


Toutes ces erreurs m'amène à penser que le dump SQL fournit dans le GIT n'est pas à jour. Est-il possible d'en fournir un nouveau?

Salut @Aym-1, effectivement sur le git le dump SQL a deux ans, des modifications ne sont sans doute pas prises en compte dedans. Je vais essayer de le mettre à jour ASAP.
edit à 12h17 : c’est fait ^^ le dump est à jour avec les tables manquantes
(C’est typiquement ce genre de problème qu’on aimerait résoudre prochainement en proposant une solution alternative d’installation.)

Pour le moment, pour les erreurs que tu rencontre de type relation xxxxxx does not exist, il suffit normalement de relancer l’installation du module avec la commande drush dre <nom_du_module> pour qu’il rejoue le script d’installation. Les tables étant décrites dans le fichier .install des modules, ça devrait les réinstaller (sans perdre de donnée).
C’est un problème qu’on a rencontré également après des mises à jour qui modifiaient la structure en BDD des modules. En attendant une mise à jour du dump, dis-moi si cette commande fait disparaître tes erreurs.

Salut @thelem,

J’ai testé avec le nouveau dump de la base, et ça a corrigé les bugs fonctionnels que j’avais observés.
J’ai donc pu créer un utilisateur, avec lequel j’ai créé un formulaire sans erreur. Une fois le formulaire publié, j’ai pu faire une soumission, et ensuite, le propriétaire du formulaire a pu supprimer la soumission.

Je n’ai pas testé extensivement, car je découvre encore Framaforms, mais on a enfin quelque chose qui fonctionne à partir de ce qui est dans le repo git :sunglasses:

Je testerai un peu plus le processus d’installation dans les jours à venir. Dans l’idéal, il ne faudrait pas avoir à utiliser Drush pour pouvoir installer et utiliser framaforms depuis le contenu du repo.
[EDIT] J’ai reconstruit mon image docker sans truncate des tables de cache Drupal, sans drush cc et sans drush rr et tout fonctionne bien dès le début :v:

Merci bcp pour ton aide.

C’est une victoire !
Et une super nouvelle, bravo pour ta patience et ton courage :stuck_out_tongue: bonne utilisation, si tu as besoin de détails techniques hésite pas à nous solliciter.
Et pour toutes les fonctionnalités pense bien à aller voir ici, c’est très complet.

Bonne journée !

1 « J'aime »

Voici ce qu’il faut pour démarrer avec Docker

1 « J'aime »

Bonjour, merci pour ces retours d’expériences !

Est-il possible d’avoir un exemple de Vhost Apache2 pour faire fonctionner tout ça ?

Et puisque vous parlez de la doc, la configuration proposé pour settings.php ne semble pas fonctionner chez moi, j’ai dû utiliser cette syntaxe :

$databases['default']['default'] = array(
  'database' => 'framaforms',
  'username' => 'framaforms_user',
  'password' => 'yourpassword',
  'host' => 'localhost',
  'port' => '',
  'driver' => 'pgsql',
  'prefix' => '',
);

plutôt que

  $databases = array (
    'default' =>.
    array (
      'default' =>.
      array (
        'database' => 'framaforms',
        'username' => 'framaforms_user',
        'password' => 'yourpassword',
        'host' => 'localhost',
        'port' => '',
        'driver' => 'pgsql',
        'prefix' => '',
      ),
    ),
  );

Bravos aux développeurs.

Salut !
Pas essayé personnellement de le faire tourner sous Apache.
Tu as quelle version de PHP ?

J’utilise PHP 7.3/Apache 2.4.38 sous Debian 10.

Actuellement, je me trouve bloqué après l’installation devant l’erreur : Le site Web a rencontré une erreur inattendue. Veuillez essayer de nouveau plus tard.

Les logs Apache ne disent rien sur cette erreur, je devrais peut-être créer un nouveau sujet ?

Bonjour,
Nous en sommes au même stade. Voir ce fil ici [Framaforms] Installation sur serveur mutualisé o2switch?.
Cordialement,

Thierry

Effectivement, à la différence que je ne suis pas sur un mutalisé mais un dédié.
Par contre, moi aussi j’ai changé le nom et l’utilisateur de la base PostgreSQL.

Je poursuis mes investigations et vous tiens informé si je trouve du nouveau !

Salut,
est-ce que tu as :

  • vérifié les logs Postgres ? (/var/log/postgresql/postgresqlxx-main.log sur Debian) Tu devrais au moins avoir un log comme quoi le service est démarré, + des log confirment que des requêtes passent.
  • bien suivi les instructions de la doc et de ce sujet sur les permissions du dossier privé ?

J’essaye de comprendre à quelle étape d’installation tu te trouves ^^

Bonsoir,

Alors, après avoir finis de lire ce long fil, mon problème semble différent.
Déjà, je confirme ce que disait @RainX : retirer les points de la configuration proposée dans le tuto pour settings.php me permet de passer d’une page blanche à mon message d’erreur.

En revérifiant les logs Apache, j’obtiens ceci :
[php7:error] [pid 8565] [client 91.168.148.99:49515] PHP Fatal error: Uncaught Error: Call to undefined function cache_get() in /var/www/framaforms/includes/module.inc:762\n Stack trace:\n#0 /var/www/framaforms/includes/module.inc(962): module_implements('system_theme_in...')\n#1 /var/www/framaforms/modules/system/system.module(2518): module_invoke_all('system_theme_in...')\n#2 / var/www/framaforms/includes/theme.inc(798): _system_rebuild_theme_data()\n#3 /var/www/framaforms/includes/theme.maintenance.inc(57): list_themes()\n#4 /var/www/framaforms/includes/bootstrap.inc(2896): _drupal _maintenance_theme()\n#5 /var/www/framaforms/includes/errors.inc(179): drupal_maintenance_theme()\n#6 /var/www/framaforms/includes/bootstrap.inc(2621): _drupal_log_error(Array, true)\n#7 [internal function]: _drupal_exception_handler(Object(ParseError))\n#8 {main}\n thrown in /var/www/framaforms/includes/module.inc on line 762

Ce qui me laisse penser que mon installation n’est pas correcte, d’autant que les logs PostgreSQL ne me donne rien.

Pour les permissions, j’ai bien appliqué la doc. J’ai tenté toute les manœuvre de @Aym-1 jusqu’aux commandes drush qui m’ont perdus … J’ai tenté une installation par Docker mais j’ai eu l’impression de sortir la grosse artillerie, et ça semble préconfiguré pour Nginx. Merci à lui en tout cas d’avoir détailler toute ses démarches pour résoudre ses problème, c’est très instructifs !

Pour collé à la procédure, j’ai remis le noms d’utilisateur et de la base de données spécifié dans le readme (formaforms_user / formaforms) et j’ai même placé l’installation dans /var/www (je cloisonne habituellement dans les home).

Sur ma page d’erreur, la console donne ceci, si ça peut servir :
Erreur dans les liens source : Error: request failed with status 500
URL de la ressource : https://****.*****.fr/sites/default/files/js/js_EebRuRXFlkaf356V0T2K_8cnUVfCKesNTxdvvPSEhCM.js

J’ai bien appliqué les permissions et créé le dossier formaforms_private, j’ai également tester les différentes suggestions du fil, sans succès si ce n’est que j’ai désormais une erreur avec une belle mise en page.

C’est un vrai parcours du combattant mais j’ai bon espoir !
Merci pour ce support.

D’après les logs fournis il semble qu’un système de cache soit utilisé, et donc peut-être pas installé. Je ne connais pas framaforms et ne peut donc pas aider plus que ça :confused:

+1 pour ce qu’a dit @Mindiell, le fichier JS qui donne une 500 vient du cache. Si tu n’as pas installé drush, tu peux directement aller voir dans ta BDD Postgres, vérifier quelle table de cache a des entrées (elles commencent par cache_ , logique) et la vider avec un simple TRUNCATE matable;.

Tu auras peut-être aussi besoin de reconstruire ton cache comme l’a fait @Aym-1 dans ce post.