Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nutzer:innen können sich nicht registrieren #539

Open
zionsback opened this issue Jul 6, 2023 · 8 comments
Open

Nutzer:innen können sich nicht registrieren #539

zionsback opened this issue Jul 6, 2023 · 8 comments

Comments

@zionsback
Copy link

Hallo,
ich habe BNote unter MySQL 10.5, PHP 8.2 und nginx 1.24 aufgesetzt. Unsere Nutzer:innen (ca. 12) können sich allerdings nicht registrieren. Nach dem Absenden des Formulars kommt nur die "Sign up"-Seite ohne weiteren Inhalt und die User landen nicht in der Datenbank. Das merkwürdige ist, dass eine Nutzerin es dennoch geschafft hat. Ich frage mich, woran das überhaupt liegen kann. Gibt es Schwierigkeiten unter PHP 8.2 oder mit bestimmten Browsern auf Smartphones?
Viele Grüße

@mattimaier
Copy link
Owner

@zionsback BNote ist für Apache HTTPd konstruiert (siehe Anforderungen) und verwendet .htaccess Dateien für Rewrite-Regeln. Es gibt für nginx aber ein Plugin, das du mal versuchen könntest.
MySQL 10.5 und PHP 8.2 sollten eigentlich funktionieren, auch wenn ich nur wenig gegen 8.x getestet habe.
Gibt es irgendwelche Logs oder Fehlermeldungen?

@zionsback
Copy link
Author

zionsback commented Jul 20, 2023

@mattimaier Also das Plugin ist scheinbar nicht für nginx 1.24 ausgelegt, zumindest geht die Kompatibilitätsliste nur bis 1.19. Außerdem kann ich es nicht installieren, da Ubuntu 20.04 nginx 1.18 zur Installation einfordert, was ich aus Sicherheitsgründen nun definitiv nicht tun kann.
Ich habe noch etwas weiter getestet, inwieweit ich User anlegen bzw. selbst registrieren kann. Ich komme hier zu unterschiedlichen Ergebnissen:

  • User 1 habe ich aus der Admin-Umgebung aus angelegt. Dieser scheint sich einloggen zu können (ist auch "aktiv"), scheitert dann aber an dem Agreement zur Verarbeitung persönlicher Daten. Klicke ich auf "Agreed" passiert nichts, klicke ich auf "Not agreed" lande ich in einer Sackgasse.
  • User 2 habe ich normal über das Formular registriert. Hier scheitert die Anmeldung (ist auch "nicht aktiv").
    Ich muss dazu sagen, dass ich den PHP-Mailer nicht eingerichtet habe. Ich habe diese Funktion noch nie benutzt und muss mich mit der Einrichtung ggf. noch auseinander setzen. Wenn du eine gute Anleitung dafür kennst, wäre das hilfreich.

Hier sind die nginx Error-Logs:
#0 /var/www/html/enchoired/main.php(32): Controller->__construct() #1 {main} thrown in /var/www/html/enchoired/src/logic/controller.php on line 57" while reading response header from upstream, client: 167.248.133.33, server: fsz.uni-bielefeld.de, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php8.2-fpm.sock:", host: "129.> 2023/07/20 08:34:08 [error] 2013516#2013516: *2127 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 167.248.133.33, server: fsz.uni-bielefeld.de, request: "GET /main.php?mod=login&fwd= HTTP/1.1", upstream: "fastcgi://unix:/var> 2023/07/20 09:40:57 [error] 2013515#2013515: *2170 FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot declare class DefaultController, because the name is already in use in /var/www/html/enchoired/src/logic/defaultcontroller.php on line 8" while reading response head> 2023/07/20 09:41:38 [error] 2013515#2013515: *2173 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined method LoginView::Logout() in /var/www/html/enchoired/src/logic/modules/logincontroller.php:58 Stack trace: #0 /var/www/html/enchoired/content.php(21): LoginController->start() #1 /var/www/html/enchoired/main.php(48): include('...') #2 {main} thrown in /var/www/html/enchoired/src/logic/modules/logincontroller.php on line 58" while reading response header from upstream, client: 129.70.176.243, server: fsz.uni-bielefeld.de, request: "GET /enchoired/main.php?mod=27 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php> 2023/07/20 09:42: ![Login](https://github.com/mattimaier/bnote/assets/57531497/cae37dec-9ac4-4f33-a710-db5db293683b) ![Sign-up](https://github.com/mattimaier/bnote/assets/57531497/1fc64a82-2484-4145-b792-538d19e90dcc) 20 [error] 2013515#2013515: *2173 FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot declare class DefaultController, because the name is already in use in /var/www/html/enchoired/src/logic/defaultcontroller.php on line 8" while reading response head> 2023/07/20 09:45:52 [error] 2013516#2013516: *2186 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined method LoginView::Logout() in /var/www/html/enchoired/src/logic/modules/logincontroller.php:58 Stack trace: #0 /var/www/html/enchoired/content.php(21): LoginController->start() #1 /var/www/html/enchoired/main.php(48): include('...') #2 {main} thrown in /var/www/html/enchoired/src/logic/modules/logincontroller.php on line 58" while reading response header from upstream, client: 129.70.176.243, server: fsz.uni-bielefeld.de, request: "GET /enchoired/main.php?mod=27 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php> 2023/07/20 09:45:56 [error] 2013516#2013516: *2186 FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot declare class DefaultController, because the name is already in use in /var/www/html/enchoired/src/logic/defaultcontroller.php on line 8" while reading response head> 2023/07/20 09:46:02 [error] 2013516#2013516: *2186 FastCGI sent in stderr: "PHP message: PHP Warning: Trying to access array offset on value of type null in /var/www/html/enchoired/src/data/systemdata.php on line 503" while reading response header from upstream, client: 129.70.> 2023/07/20 09:46:07 [error] 2013516#2013516: *2186 FastCGI sent in stderr: "PHP message: PHP Warning: Trying to access array offset on value of type null in /var/www/html/enchoired/src/data/systemdata.php on line 503" while reading response header from upstream, client: 129.70.>
Ich kriege hier den log leider nicht vollständig kopiert, ich hoffe, es ist alles notwendige sichtbar.

Login
Sign-up

@mattimaier
Copy link
Owner

Ganz allgemein scheint das Routing nicht richtig unter nginx zu funktionieren, weil eben die Rewrite-Regeln nicht funktionieren. Das ist aber zugegebenermaßen eher eine Vermutung als Wissen. Auf welche Version bist du denn genau? Ich hoffe 4.0.2 und du hast 4.0.0 installiert, dann auf 4.0.1 und auf 4.0.2 jeweils mit der update_db.php upgegraded. Das könnte schonmal das ein oder andere Problem lösen, sollte dem nicht so sein.
Unter Ubuntu 20.04 könntest du natürlich auch den Apache httpd nehmen, dann geht es mit hoher Wahrscheinlichkeit.

Was die User angeht:

  1. Du kannst die Zustimmung einfach auf manuell umgehen, indem du in den Datenbank bei den Usern das Feld gdprOk auf 1 setzt. Würde mich interessieren, ob das funktioniert. Kannst du das mal checken?
  2. Die Mailing Funktion brauchst du nicht unbedingt. Du kannst das manuell überbügeln indem du auf das Benutzermodul als Admin gehst und die User aktiv setzt oder eben in der Datenbank das Feld active auf 1 setzt.

Ich hoffe diese Infos helfen dir weiter.

@zionsback
Copy link
Author

zionsback commented Jul 21, 2023

Also ich habe die 4.0.0 installiert und habe inkrementell auf 4.0.2 upgedated. Und der Updater hat mir zumindest beim zweiten Patch auf 4.0.2 auch angezeigt, dass er Spalten in die DB hinzugefügt hat. Beim Patch auf 4.0.1 waren die Einträge angeblich schon da.
Ich könnte theoretisch, wenn ich die Ports anpasse, Apache und nginx parallel laufen lassen. Aber ehrlich gesagt, ist das nicht unbedingt mein Ziel. Das würde ich nur als letzten Schritt in Erwägung ziehen.

Zu den Usern:
Das Feld (die Spalte) "gdpr0k" gibt es interessanter Weise nicht. Einen User auf "active" zu schalten hat problemlos geklappt, sowohl via Menü, als auch in der DB selbst. Beim Aktivieren des User 2 (den ich per Formular registriert habe) konnte ich anschließend der Datenverarbeitung erfolgreich zustimmen und der User schien zu funktionieren. Bei dem bereits aktivierten User 1 (den ich über "Add User" hinzugefügt habe) geht das immer noch nicht.

Docker:
Ich habe jetzt parallel in meinem homelab bnote - nach Anleitung - via Docker aufgesetzt. Ich habe lediglich die Ports und den DB-User im yml angepasst. Beide Container laufen, aber wenn ich die Seite aufrufe, bekomme ich folgende Fehlermeldung:
`Warning: require(/var/www/html/BNote/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/BNote/dirs.php on line 3

Fatal error: require(): Failed opening required '/var/www/html/BNote/vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/html/BNote/dirs.php on line 3`
Also habe ich im Container nachgeschaut, ob die Datei fehlt und in der Tat fehlt das Verzeichnis "vendor" im Container. Ich habe die install.php, upgrade_db.php und main.php versucht zu öffnen, aber es ist immer der gleiche Fehler.

@mattimaier
Copy link
Owner

Ich sehe du kommst voran - sehr gut.

Also zu den Usern: Schau mal in die Tabelle contact ob es da die Spalte gdpr_ok bzw. status gibt. Ich bin mir jetzt nicht mehr sicher, welchen Status ein User genau haben muss, aber ich würde es mal mit den Werten 1 oder 2 versuchen - 0 müsste irgendwas wie inaktiv/deaktiviert/abgelehnt/unklar sein. Wenn es dann funktioniert, müsste man nur checken, warum man den Wert nicht setzen kann bzw. wie man hier einen Fix bauen könnte.

Docker
Das ist wohl noch ein altes Image, denn wenn der vendor Ordner fehlt, dann heißt es, dass die Abhängigkeiten nicht (oder nicht richtig) installiert wurden. Konkret sind diese hier für PHP definiert:
Abhängigkeiten im Composer
Hier findest du ein paar Tipps, wie man die installiert.

@zionsback
Copy link
Author

zionsback commented Jul 28, 2023

@mattimaier So langsam wird es frustierend... wirklich. Ja, die Spalte gdpr_ok ist in bnote.contact enthalten. Und die Werte darin dürften funktionieren, sieht zumindest so aus.
Dass das Docker-Image zu alt ist, ließ sich leicht fixen, indem ich im Container den 4er Release "installiert" habe (copy&overwrite). Erst sah alles gut aus und ich schnupperte schon den Duft des Erfolgs. Aber ich konnte meinen Admin-User nicht einloggen. Egal, was ich versucht habe.
Mittlerweile habe ich die dritte Installation in einem Proxmox-LXC und Turnkey-LAMP stack aufgesetzt. Die Installation läuft durch, bis ich mich einloggen will. Mir ist völlig unklar, was da nicht funktioniert. Ich habe jetzt bewusst ein einfaches Passwort ohne Sonderzeichen verwendet (entsprich natürlich der Policy). Es fühlt sich so an, als ob Benutzername und Passwort gar nicht erst abgeglichen werden. Ich kann das System zum Glück jederzeit zurücksetzen, aber mich verlässt langsam die Geduld. Hast du noch eine Idee woran das liegen könnte? Oder könntest du sogar einmal persönlich drüber gucken?

PHP Fatal error: Cannot declare class DefaultController, because the name is already in use in /var/www/html/BNote/src/logic/defaultcontroller.php on line 8, referer: http://192.168.0.18/BNote/main.php?mod=login [Fri Jul 28 12:15:35.643851 2023] [php7:notice] [pid 26673] [client 192.168.0.30:35150] PHP Stack trace:, referer: http://192.168.0.18/BNote/main.php?mod=login [Fri Jul 28 12:15:35.643855 2023] [php7:notice] [pid 26673] [client 192.168.0.30:35150] PHP 1. {main}() /var/www/html/BNote/main.php:0, referer: http://192.168.0.18/BNote/main.php?mod=login [Fri Jul 28 12:15:35.643857 2023] [php7:notice] [pid 26673] [client 192.168.0.30:35150] PHP 2. Controller->__construct() /var/www/html/BNote/main.php:32, referer: http://192.168.0.18/BNote/main.php?mod=login

@zionsback
Copy link
Author

@mattimaier Gibt es wirklich nichts, mit dem du mir helfen kannst? Ich habe optimalste Bedingungen geschaffen (neue VM, Apache2, PHP7.4) und trotzdem komme ich nicht weiter. Ich fände es sehr bedauerlich, wenn wir das tool nicht zum laufen kriegen würden.

@Hannfeld
Copy link
Contributor

Hannfeld commented Aug 24, 2023

Heya, ich nutze die empfohlene Software, aber hatte ein ähnliches Problem. Bei mir hat sich rausgestellt, dass User einen Geburtstag angeben müssen, um sich zu registrieren. Das ist kein Pflichtfeld, deshalb wird es nicht abgefangen, aber wenn man dort nichts eingibt, dann beschwert sich die Datenbank (oder so ähnlich, ist nicht meine Expertise). Ist das vielleicht auch bei dir das Problem? Das könnte erklären, warum eine Nutzerin durchgekommen ist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants