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

  • SHODAN
    antwortet
    - 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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Und wieso gibst Du dort den absoluten Pfad an und im PHP nicht?!

    Einen Kommentar schreiben:


  • SHODAN
    antwortet
    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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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?

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Hmpf - ich würde mal zu Anfang und Ende eine mail schicken mit einem Zeitstempel und sonstigen verfügbaren Informationen.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • SHODAN
    antwortet
    @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.

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Mach mal in Zeile 0, also noch vor <?php diese Zeile:

    #!/usr/bin/php

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Dann wirst Du wohl den falschen Pfad benutzen.

    Einen Kommentar schreiben:

Lädt...
X