Frage zu einem Fehler im Code einer PHP-Seite

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Frage zu einem Fehler im Code einer PHP-Seite

      Hallo,

      eventuell kann mir hier jemand helfen.
      Ich habe seit ca. vier Jahren ein Rating System/Bewertungssystem auf einer Website am Laufen.
      Dort kann man verschiedenes mit der Vergabe von Sternen bewerten.

      Die Ergebnisse werden in einer Datenbank erfasst und es gibt auch ein Admincenter, in das man sich online ein- und ausloggen kann.
      Seit einiger Zeit erscheinen beim Ausloggen die folgenden beiden Fehlermeldungen direkt übereinander auf einer Seite:

      Warning: session_regenerate_id(): Cannot regenerate session id – session is not active in /www/htdocs/w00xxx/myfolder/rating/upload/admin/php/logout.php on line 12

      Warning: Cannot modify header information – headers already sent by (output started at /www/htdocs/w00xxx/myfolder/rating/upload/admin/php/logout.php:12) in /www/htdocs/w00xxx/myfolder/rating/upload/admin/php/logout.php on line 13


      Das System inkl. des Bewertens scheint aber trotzdem zu funktionieren.
      Ich weiß nicht, ob die Fehlermeldungen etwas mit der verwendeten PHP-Version zu tun haben. Vor einger Zeit hatte ich mal auf PHP 7 gewechselt und akktuell wird auf der Website 7.2 verwendet.

      Der Code auf der PHP-Seite sieht so aus:

      PHP-Quellcode

      1. <?php
      2. session_start();
      3. $ref = getenv('HTTP_REFERER');
      4. if(!isset($ref) || $ref=='') $ref='../index.php';
      5. if(isset($_SESSION['username'])) {
      6. session_unset();
      7. session_destroy();
      8. session_write_close();
      9. setcookie(session_name(),'',0,'/');
      10. session_regenerate_id(true);
      11. header("Location: ".$ref); }
      12. else { header("Location: ".$ref); }
      13. ?>
      Alles anzeigen

      Was könnte in den Zeilen 12 und 13 falsch sein, das nun auf einmal die Fehlermeldungen hervorruft?

      Grüße
      Skippy

      rating1.png
      .
      PC & Notebook: Windows 10 Pro (64 Bit) mit MS Office 2019
      Notebook: Asus VivoBook Pro 17 N705FD-GC014T
      Browser: Firefox, Chrome
      WLAN-Router: AVM Fritz!Box 7272
      Smartphone: Samsung Galaxy S7 edge (Android 8)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von =Skippy= ()

    • =Skippy= schrieb:

      session_regenerate_id(true);

      das "true" gehört da nicht rein. es wird kein parameter erwartet, da die session durch eine neue ersetzt und die aktuellen sessionswerte übernommen werden. (beschreibung)
      aber warum versucht du auf sessionsdaten zu zugreifen, wenn du diese vorher mit _unset und _destroy entfernst?
    • Öhm, das weiß ich sozusagen nicht. :oops: Das ganze Tool stammt nicht von mir, sondern ist ein "gekauftes".
      Ich hatte nur alles so installiert und eingestellt, wie es vorgegeben war. Meine eigenen Kenntnisse von solchen Code-Dingen sind etwas bescheiden...
      Früher wurden auch keine Fehlermeldungen angezeigt, erst offenbar seit dem Wechsel auf PHP 7.2.

      Das (true) hatte ich eben mal entfernt, also nur die leeren Klammern stehen gelassen. Die beiden Fehlerzeilen wurden aber weiter angezeigt.
      Dann habe ich einfach mal (false) hingeschrieben, damit gab es aber auch keine Änderung.
      Zwischendurch hatte ich auch jedes Mal den Cache des Browsers geleert.

      Muss ich das irgendwie ganz anders machen?
      .
      PC & Notebook: Windows 10 Pro (64 Bit) mit MS Office 2019
      Notebook: Asus VivoBook Pro 17 N705FD-GC014T
      Browser: Firefox, Chrome
      WLAN-Router: AVM Fritz!Box 7272
      Smartphone: Samsung Galaxy S7 edge (Android 8)
    • Ich noch mal.
      Muss in Zeile 13 vielleicht auch noch etwas geändert werden, wenn ich in Zeile 12 das "true" entferne?
      .
      PC & Notebook: Windows 10 Pro (64 Bit) mit MS Office 2019
      Notebook: Asus VivoBook Pro 17 N705FD-GC014T
      Browser: Firefox, Chrome
      WLAN-Router: AVM Fritz!Box 7272
      Smartphone: Samsung Galaxy S7 edge (Android 8)
    • also erstmal klarstellen, das es keine fehler sind, sondern eher warnungen, welche darauf verweisen könnten, das es einmal zum problem werden könnte. in den bisherigen versionen und mauch in der neuen, werden unnütze anweisungen einfach ignoriert. php 7.x hat aber seiner früherkennung wesentlich verbessert und sensibiliert, so das nun meldungen kommen, die zuvor noch nicht auftauchten.


      =Skippy= schrieb:

      Warning: session_regenerate_id(): Cannot regenerate session id – session is not active in /www/htdocs/w00xxx/myfolder/rating/upload/admin/php/logout.php on line 12
      besagt ja, das es keine aktive session gibt. die anweisung selber ist also unnötig oder wenn man es genau nimmt fehlerhaft.

      der zweiten meldung auf die schliche zu kommen, könnte etwas umständlicher werden, da diese nicht unmittelbar aus diesen code-snippet stammen muss, sondern auch aus anderen elementen des cms( ist das ein vorgefertigtes cms?) -script. nennt sich die datei aus der dieses script stammt :"logout.php"? wenn ja: mal der tipp: entferne mal zeile 12; bzw kommentiere (zeilenanfang einfach mal eine raute einfügen) die einfach aus; testen, dann mal versuchen zeile 13 umzuändern in: "exit(header("Location: ".$ref)); }" und berichten.
    • Das Auskommentieren hat geholfen.
      Nach dem Logout bleiben die Fehlermeldungen nun weg.
      Hab es zwei Mal getestet und auch selbst mal etwas auf der Website bewertet, um zu gucken, ob noch alles funktioniert. Und das tut es.
      Danke! :-)
      .
      PC & Notebook: Windows 10 Pro (64 Bit) mit MS Office 2019
      Notebook: Asus VivoBook Pro 17 N705FD-GC014T
      Browser: Firefox, Chrome
      WLAN-Router: AVM Fritz!Box 7272
      Smartphone: Samsung Galaxy S7 edge (Android 8)
    • Neue Fehlermeldung für den Code einer PHP-Seite

      Neu

      Hallo,

      ich habe plötzlich wieder eine neue und ähnlichen Fehlermeldung. Seit drei Tagen zählt der auf meiner Website eingebaute Besucherzähler nicht mehr. Er hängt bei der Zahl von Mittwoch fest und die erhöht sich nicht mehr.
      Eventuell hängt es mit einem Windows-Update zusammen, das ich an diesem Tag ausgeführt habe (Update KB4497934 vom 21. Mai für Windows 10, Version 1809).
      Ich stehe mal wieder dabei auf dem Schlauch, wie ich den Fehler beheben kann, und brauche Hilfe...

      Das sind die beiden Fehlerzeilen, die eingeblendet werden:

      Warning: file_put_contents(counter_script/data/c_counter.db): failed to open stream: Permission denied in /www/htdocs/w00xxx/myfolder/counter_script/counter_functions.php on line 109

      Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00xxx/myfolder/counter_script/counter_functions.php:109) in /www/htdocs/w00xxx/myfolder/counter_script/counter_functions.php on line 152

      Das sind die betreffenden Stellen in der counter_functions.php:

      PHP-Quellcode

      1. function set_counter()
      2. {
      3. $counterValue = file_get_contents( COUNTER_FILE );
      4. if ( $counterValue === FALSE ) {
      5. return;
      6. }
      7. file_put_contents( COUNTER_FILE, ($counterValue+1), LOCK_EX );
      und

      PHP-Quellcode

      1. /** ip adresse wurde nicht gefunden */
      2. if ($found == false) {
      3. /** cookie setzen und ip + zeit speichern */
      4. setcookie('user_online', time() + 60 * USER_ONLINE_TIME, time() + 60 * USER_ONLINE_TIME);
      5. fwrite($fp, $user_ip . '|' . (time() + 60 * USER_ONLINE_TIME) . "|\r\n");
      6. $user_online++;
      7. }
      .
      PC & Notebook: Windows 10 Pro (64 Bit) mit MS Office 2019
      Notebook: Asus VivoBook Pro 17 N705FD-GC014T
      Browser: Firefox, Chrome
      WLAN-Router: AVM Fritz!Box 7272
      Smartphone: Samsung Galaxy S7 edge (Android 8)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von =Skippy= ()

    • Neu

      Es liegt wahrscheinlich an den Besitzrechten der Datei. Der PHP-Prozess hat vermutlich keine Berechtigung, die Datei zu öffnen oder zu beschreiben. Warum dieser Fehler allerdings jetzt plötzlich auftritt, ist schwer zu sagen.

      Ich denke nicht, dass es am Windows-Update liegt. Du hostest die Seite ja nicht auf deinem PC, sondern bei irgendeinem Web-Hoster, oder nicht?

      Ich würde erstmal mit einem FTP-Programm schauen, wem die Datei gehört und welche Permissions sie hat.
    • Neu

      An den Besitzrechten liegt es offenbar nicht. Die Seite, die für die Anzeige der aktuellen Zahl zuständig ist, war die einzige Seite/Datei, die auf 644 stand. Ich habe sie jetzt, so wie alle anderen, auf 777 gesetzt und somit können alle Besucher nun auch dort sozusagen neben lesen auch noch schreiben und ausführen.

      Das hat leider aber nicht geholfen. Der Zähler springt immer noch nicht weiter. Habe die Seite mehrmals reloaded, den Cache geleert und auch den PC neu gestartet.
      In einer anderen Datei werden die IP's der Besucher gespeichert und da kann ich sehen, das heute schon einige auf der Website unterwegs waren.

      Sehr seltsam ist das alles. Den Counter benutze ich nun schon über ein Jahr und bis jetzt hat er durchgehend funktioniert. Ich habe an keinen Einstellungen etwas verändert. Auch nichts in den letzten Tagen auf der Website.
      .
      PC & Notebook: Windows 10 Pro (64 Bit) mit MS Office 2019
      Notebook: Asus VivoBook Pro 17 N705FD-GC014T
      Browser: Firefox, Chrome
      WLAN-Router: AVM Fritz!Box 7272
      Smartphone: Samsung Galaxy S7 edge (Android 8)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von =Skippy= ()

    • Neu

      Bei beiden sind alle Besitzrechte aktiviert, es steht also jeweils auf 777.
      Um sicher zu gehen, dass das auch wirklich überall so ist, habe ich am Schluss zusätzlich noch mal für das ganze "counter_script" Verzeichnis samt Unterverzeichnissen dieses "Datei-Attribute auf 777 setzen" durchgeführt, weil ich gedacht habe, doppelt hält besser.
      .
      PC & Notebook: Windows 10 Pro (64 Bit) mit MS Office 2019
      Notebook: Asus VivoBook Pro 17 N705FD-GC014T
      Browser: Firefox, Chrome
      WLAN-Router: AVM Fritz!Box 7272
      Smartphone: Samsung Galaxy S7 edge (Android 8)