Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Server führt PHP-Skript nicht aus - für den Browser schon!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Server führt PHP-Skript nicht aus - für den Browser schon!

    Ich habe zu meiner Problematik entweder nichts passendes gefunden oder die beschriebenen Sachen haben nicht funktioniert.

    Hintergrund:

    Ich möchte eine MySQL-Datenbank automatisch sichern lassen und habe dazu auch schon eine PHP-Datei "backup.php" erstellt. Diese legt beim Aufruf einen Dump der DB in dem FTP-Ordner an.

    Das Skript funktioniert tadellos, allerdings möchte ich die Ausführung des Skripts via Cronjob lösen und andererseits die PHP-Datei und den Speicherort für die Dump-Files unter das html-Verzeichnis legen, so dass beides nicht über URL zu erreichen ist.

    Problem:

    Der Cronjob wurde auch erfolgreich eingebunden und lässt sich auch in der Console über crontab -l anzeigen:
    Code:
    50 23 * * * php /var/backup/backup.php
    Allerdings wird zum gewünschten Zeipunkt kein Dump angelegt. Also habe ich den Cronjob geändert, dass er minütlich die Datei ausführt und die PHP-Datei ins html-Verzeichnis /var/www/html/backup.php gesetzt. Und wieder werden keine Dump-Dateien angelegt, in den Logs sehe ich aber, das der Cronjob minütlich durchgeführt wurde. Rufe ich nun die URL htt://www.domain.de/backup.php auf, so erhalte ich mein gewünschtes sql-Dump.

    Nun habe ich u.A. weiter probiert und wollte die PHP-Datei über die Konsole (mit Putty) öffnen, z.B.

    php /var/backup/backup.php
    php -f /var/backup/backup.php
    /usr/bin/php /var/backup/backup.php
    u.v.m.

    ich erhalte bei allen Sachen zwar keine Fehlermeldung als wenn alles funktioniert, aber die sql-Dumps werden einfach nicht erstellt.

    Zur Info:

    Ich habe vollen Zugriff auf den Server (Apache/2.2.3 CentOS) und nutze PHP 5.1.6 (cli).

    Ich hoffe, dass jemand eine Lösung oder weitere Ansatzpunkte für mein Problem kennt.

    SHODAN


  • #2
    Dann wirst Du wohl den falschen Pfad benutzen.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Mach mal in Zeile 0, also noch vor <?php diese Zeile:

      #!/usr/bin/php
      PHP-Code:
      if ($var != 0) {
        
      $var 0;

      Kommentar


      • #4
        @nikosch:
        Der Pfad ist aber richtig, denn wenn ich beispielsweise beim Cronjob nicht backup.php sondern backup2.php eingebe, dann erhalte ich eine eMail mit der Fehlermeldung, dass die input-File nicht geöffnet werden konnte.

        @Wolla:
        Das habe ich auch schon ausprobiert, ändert aber leider nichts. Außerdem habe ich gelesen, dass dies bei cli ignoriert wird und daher auch entfernt werden kann.

        Kommentar


        • #5
          Dann wird der Dump vielleicht nur woanders hingeschrieben. Oder es fehlen Berechtigungen o.ä. Im Zweifel mal die Logfiles lesen.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Hmpf - ich würde mal zu Anfang und Ende eine mail schicken mit einem Zeitstempel und sonstigen verfügbaren Informationen.
            PHP-Code:
            if ($var != 0) {
              
            $var 0;

            Kommentar


            • #7
              Klingt so, als habe dein Script Abhängigkeiten, die einem CLI Script nicht zur Verfügung stehen.. kannst du Code posten oder sprengt das den Rahmen?
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Also das besagte PHP-Skript sieht wie folgt aus:
                PHP-Code:
                #!/usr/bin/php
                <?php

                $user
                ="user";
                $pass="password";
                $db="database";

                $file"backup_"$db "-" date("d.m.y-H.i") .".sql"
                $dump=exec("mysqldump --user=$user --password=$pass --add-drop-table --all-databases > $file");  

                ?>
                Um zu schauen, ob ein PHP-Code über die Konsole gestartet werden kann habe ich mal die Datei "test.php" hochgeladen:
                PHP-Code:
                <?php

                echo "Hello World!";

                ?>
                Mit dem Aufruf "php test.php" bekomme ich dann bei der Konsole auch "Hello World!" angezeigt.

                Ein Berechtigungsproblem kann es nicht sein, weil ich alles mit root probiert habe, allerdings muss eventuell die Konfiguration geändert werden.

                Ich habe mein Problem übrigens auf andere (elegantere) Weise ohne PHP gelöst. Ich mach den Dump via mysqldump direkt über den Cronjob:
                Code:
                50 23 * * * mysqldump --default-character-set=latin1 --user=user --password=password database > /var/db-backup/db_backup_`date +\%Y-\%m-\%d`.sql
                Damit bekomme ich nun täglich um 23:50 Uhr meine MySQL-Sicherung, z.B. heute als /var/db-backup_2010-08-28.sql.

                SHODAN

                Kommentar


                • #9
                  Und wieso gibst Du dort den absoluten Pfad an und im PHP nicht?!
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    - Dann wird der Dump vielleicht nur woanders hingeschrieben.
                    - Und wieso gibst Du dort den absoluten Pfad an und im PHP nicht?!
                    Das ist genau das Problem gewesen! Beim Aufruf durch den Browser wurde der Dump immer in das Verzeichnis geschrieben, wo sich die PHP-Datei befand. Wenn ich es aber über die Konsole gemacht habe, dann wurde der Dump stattdessen immer ins Verzeichnis /root/ geschrieben, was ich allerdings nicht bemerkt hatte.

                    Also es hat alles super funktioniert, es war nur ein falsches Verzeichnis. Aber ich werde meine tägliche Sicherung über den im oberen Post geschilderten Cronjob durchführen.

                    Vielen Dank für das Lesen und die Hilfe.

                    SHODAN

                    Kommentar

                    Lädt...
                    X