Hi!
exec( "mysqldump --user=$dumpuser --password=$dumppass --add-drop-table $dumpbase >"" . $dumpbase . " - " . date("Y.m.d") . ".sql"");
Keine Zeichenkodierungsangabe? Willst du das dem Zufall überlassen und damit Datenverlust riskieren?
Führe ich ihn ganz normal aus, z.B. http://domain.de/backup.php so funktioniert alles.
Ganz normal ist das auch nicht, denn es ist ebenfalls mehr oder weniger Zufall, dass mysqldump im Pfad steht und gefunden wird.
Nun hab ich das Script aber in den Ordner /var/www/mysql-backup verschoben. Führe ich es nun über SSH mit dem Befehl "php var/www/mysql-backup/backup.php" aus, so funktioniert es auch.
Und hier verlässt du dich auch wieder auf den Zufall, dass du dich im Wurzelverzeichnis befindest.
Nun habe ich es in Crontab eingetragen, zum Test "* * * * * php var/www/mysql-backup/backup.php". Aber es liegt nachher im Verzeichnis /var/www/mysql-backup kein Logfile vor.
Zwei Zufälle eingebaut. Findest du sie?
Could not open input file: var/www/mysql-backup/backup.php
Der Ordner hat aber die Rechte 777, muss die Datei diese ebenfalls haben?
Nein, denn sie wird ja vom Programm namens php nur gelesen und nicht vom Betriebssystem ausgführt.
P.S. PHP wird bei mir als FastCGI-Applikation ausgeführt
Das ist interessant, wenn es um Aufrufe aus dem Apachen geht, aber irrelevant von der Kommandozeile.
Laut dem Cronlog müsste aber alles funktioniert haben:
Aug 6 01:31:01 s15430844 crond[1969]: (root) CMD (php var/www/mysql-backup/backup.php)
Zusammen mit der Fehlermeldung kann man dem nur entnehmen, dass php gefunden wurde.
Nun meine eigentliche Frage, wo liegt das Problem?
An zu wenig Absolutismus.
Und noch eine banahle Frage, die aber vielleicht hilft, wo liegt der PHP-Error-Log?
(Banal ohne h.) Kommt auf die Konfiguration an.
Kann den nähmlich nicht finden, und das Ändern der Einstellungen in der php.ini bringt nix...
Welche änderst du denn? Die für die Kommandozeilenausführung von php oder eine zufällige andere? Apache und Kommandozeile sind unterschiedliche Umgebungen, wofür es sinnvoll ist, sie getrennt zu konfigurieren. php --ini zeigt dir an, welche ini-Dateien gelesen werden. Und mit -c kannst du explizit eine vorgeben.
Lo!