Ankündigung

Einklappen
Keine Ankündigung bisher.

localhost: PHP-Änderungen werden nicht übernommen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • localhost: PHP-Änderungen werden nicht übernommen

    Hallo,

    ich habe ein seltsames Phänomen, das ich mir nicht erklären kann. Das Phänomen tritt - nicht reproduzierbar wann - nur manchmal auf.

    Unter Linux Mint habe ich LAMP installiert, um lokal meine PHP-Skripte zu testen. Das klappt soweit ganz prima. Jetzt kommt es vor, dass ich Fehlermeldungen von PHP bekomme. Ich ändere also mein Skript, speichere es ab und probier es noch mal. Trotzdem zeigt mir das Skript im Browser die gleiche Fehlermeldung, obwohl ich das geändert habe. Ich füge Leerzeilen ein, um zu testen, ob die Änderungen irgendwie registriert wurden. Ergebnis: Er zeigt die Fehlermeldung immer noch in der gleichen Zeile an, obwohl die betreffende Zeile jetzt eine Leerzeile ist.

    Folgendes habe ich probiert:

    - Browsercache löschen: kein Effekt
    - PHP-Skript nicht nur speichern, sondern auch schließen: kein Effekt
    - Selbst wenn ich einen anderen Browser öffne, in dem das Skript noch nie gelaufen ist, zeigt er mir die gleiche Fehlermeldung für die Zeile an, die jetzt eine Leerzeile ist

    Erst wenn ich meinen Rechner neu boote, werden die Änderungen wirksam.

    Erklären kann ich mir das nicht, ich habe aber Vermutungen:

    - Hat vielleicht mein neues lokales Apache einen internen Cache oder so, den man erst löschen muss?
    - Ich habe mein System auf einer SSD installiert (mit ext4). Kenne mich damit nicht so aus, aber ich habe gehört, dass das mit der Speicherverwaltung etwas komplizierter ist (irgendwie mehrmals gespeichert wird, um Datenverluste zu vermeiden). Könnte es sein, dass das Skript zwar gespeichert wird, aber "nicht richtig" und das ext4-Dateisystem das erst mitkriegt, wenn ich neu boote?

    Hat einer irgendwelche Ideen?

  • #2
    Was tut denn das script? Wenn es nichts besonderes macht, dann kannst du ja mal versuchen es von der shell aus aufzurufen. Wenn das auch nicht geht, dann koennte(!) es ein opcode-cache sein, bei dem der mtime-check deaktiviert ist.
    Ich tippe aber mal auf was ganz einfaches.

    Kommentar


    • #3
      Zitat von rkr Beitrag anzeigen
      Was tut denn das script? Wenn es nichts besonderes macht, dann kannst du ja mal versuchen es von der shell aus aufzurufen. Wenn das auch nicht geht, dann koennte(!) es ein opcode-cache sein, bei dem der mtime-check deaktiviert ist.
      Ich tippe aber mal auf was ganz einfaches.

      Das Phänomen ist schon öfter bei diversen Skripten aufgetreten. Und die machen so das Übliche: Diverse Berechnungen durchführen, auf Datenbanken zugreifen und sie verändern usw. - also nichts Exotisches. PHP vom Terminal auszuführen habe ich noch nie gemacht - der Befehl " PHP bla.php" zeigt mir, dass PHP von der Konsole nicht installiert ist (command not found).

      Das mit dem opcode-Cache scheint nicht die Ursache zu sein: Ich habe mal geguckt und festgestellt, dass php-apc bzw. php5-apcu auf meinem System gar nicht installiert ist.

      Ich habe auf einer anderen, normalen Festplatte die gleichen Skripte gehabt (ubuntu). Da trat der Fehler nicht auf. Also liegt das entweder an der SSD oder an einer anderen Konfiguration der (neueren) Apache- bzw. PHP-Versionen, vermute ich mal.

      Ich werde mal meine Skripte auf die normale Festplatte auslagern und und gucken, ob es dann geht...

      Kommentar


      • #4
        Uh, da fehlt noch viel Wissen
        Was für ein Linux ist das?

        Kommentar


        • #5
          Zitat von rkr Beitrag anzeigen
          Uh, da fehlt noch viel Wissen
          Was für ein Linux ist das?
          Linux Mint 1 'Debian', Cinnamon 64 bit

          Zugegeben, bin nicht grade der Crack - gehe immer nur so weit, bis das funktioniert, was ich will

          Kommentar


          • #6
            Dann brauchst du erst mal nur
            Code:
            sudo apt-get install php-cli
            Dann hast du php auch auf der commando-zeile.

            Kommentar


            • #7
              Zitat von rkr Beitrag anzeigen
              Dann brauchst du erst mal nur
              Code:
              sudo apt-get install php-cli
              Dann hast du php auch auf der commando-zeile.
              Ich habe jetzt php5-cli installiert und ein paaar Testskripte laufen lassen. Immer wenn ich Änderungen vornehme, werden diese auch übernommen. Das Problem: Die Änderungen werden auch jedesmal wirksam, wenn ich das gleiche Skript im Browser aufrufe. Schließlich tritt das Phänomen ja nur manchmal auf. Ich kann also nur warten, bis das Problem mal wieder auftritt und dann das betreffende Skript in der Kommandozerile aufrufen und gucken, ob es dort Änderungen übernimmt.

              Das kann allerdings ein bisschen dauern. Also Danke erstmal für Deine Hilfe

              Kommentar


              • #8
                Eben hatte ich wieder den Fall, dass im Browser Änderungen des Skriptes nicht übernommen wurden. Ich habe also die Datei im Terminal mit "php /home/~bla/public_html/datei.php" aufgerufen. Als "php http.//localhost/datei.php" gehts ja nicht, sodass nur der Inhalt der Datei selbst ausgegeben wird. Aber da sind die Änderungen sichtbar.

                Viel schlauer bin ich jetzt auch nicht...

                Kommentar


                • #9
                  In der Kommandozeile solltest du dein Skript auch nicht via http sonder direkt per Dateiname aufrufen,...
                  [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
                  [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

                  Kommentar


                  • #10
                    Klingt für mich verdächtig nach Browser-Cache, obwohl Du (purem) oben geschrieben hattest, das sei sichergestellt...
                    Häng doch mal an Deine aufrufende URL einen Query-String mit immer anderen Werten, a la ...?nix=1234

                    Kommentar


                    • #11
                      Liegt's doch an SSD?

                      Jetzt nach einiger Zeit zur Info:

                      Ich habe jetzt meine Verzeichnisse
                      /var
                      /tmp
                      /home

                      von der SSD auf die normale Festplatte ausgelagert (siehe dazu auch http://www.pcwelt.de/ratgeber/Linux-...x-6593528.html)

                      Meine Skripte liegen im home-Verzeichnis.

                      Das war vor ca. 2 Wochen.
                      Seitdem ist das Problem nicht mehr aufgetaucht.

                      Dass das die Ursache war kann ich natürlich nicht beweisen, da der Fehler nur sporadisch auftrat und nicht reproduzierbar war.

                      Es liegt jedoch der Schluss nahe, dass PHP / ext4 und die SSD nicht korrekt zusammenarbeiten. Es handelt sich übrigens um eine Kingston SSDNow 120 GB

                      Kommentar


                      • #12
                        Sicher bin ich mir nicht, aber nach den Verhalten was du beschrieben hast könnte das (ganz vielleicht ) was mit "Persistent RAMDISK" zu tun haben. Schau mal hier: https://wiki.debian.org/SSDOptimizat...istent_RAMDISK

                        Vielleicht hilft das ja weiter.

                        Gruß

                        Kommentar

                        Lädt...
                        X