Hi,
Bist du sicher und beachtest den Unterschied zwischen absoluter und relativer Angabe (foo/bar ist nur von der Wurzel aus gleich /foo/bar) sowie zwischen dem System an sich und einer chroot-Umgebung?
Das habe ich am Anfang nicht gemacht, und vermutlich ging es deshalb schief. Jetzt passt aber alles.
Bist du sicher, dass admin der richtige ist? Plesk kennt zwei Nutzer, einen mit Zugang zum Verwaltungspanel und ein anderer wird für das Hosting verwendet. Da letzterem einige Verzeichnisse und Dateien gehören, muss er im System existieren. Wenn der nicht crontaben darf, hätte ich eine Meldung erwartet, deren Text auf ein Berechtigungsproblem hinweist, nicht auf eine Nichtexistenz.
admin ist der Benutzer zum Verwaltungspanel von Plesk, root der für das Parallels Power Panel, in dem ich Zugriff auf sämtliche Servereinstellungen habe, ansonsten habe ich in Plesk nur noch den FTP user (lukas), aber das geht auch nicht:
[root@s15430844 ~]# crontab -u lukas -e
no crontab for lukas - using an empty one
Wenn du etwas von den Hinweisen nicht verstehst, die ich gebe, frag bitte nach und ignoriere nicht die Häfte davon. Sonst kommen wir gar nicht oder nur umständlich ans Ziel.
OK, werde ich in Zukunft versuchen. Ich bin ein eher ungeduldiger Mensch, und wenn etwas nicht so tut wie es sollte, dann verwerf ich das schnell wieder.
exec() stellt die Ausgabe inklusive der darin enthaltenen Fehlermeldungen zur Verfügung. Die letzte Zeile davon ist das Funktionsergebnis, die komplette Ausgabe bekommt man über den zweiten Funktionsparameter zu sehen. Was steht dort drin?
Was it der zwie Funkionspramter?
»»string exec ( string $command [, array &$output [, int &$return_var ]] )
Vielleicht $return_var?
Dein PHP-Script erzeugt vermutlich nur eine Ausgabe mit Whitespace, vielleicht ein Zeilenumbruch nach dem schließenden ?>. Wenn nach dem PHP-Code in einer Datei nichts mehr kommt, kann man das ?> ganz weglassen. Dann können sich dahinter auch keine Whitespaces unbemerkt ansammeln.
Sicher? Also ich hab nach ?> nix gefunden, außerdem beende ich die Funktion mit exit(); , aber auch wenn ich das weglasse bekomme ich die Email.
Darf man ?> überhaupt weglassen? Eigentlich nicht, oder?
Hier der Code:
<?php
set_time_limit(900); // 15 Minuten maximal ausführen
error_reporting(E_ERROR); // Nuz Fatal-Errors melden
ini_set("display_errors", 'ON'); // Errors per E-Mail versenden
$timestamp=time();
$datum = date("Y.m.d",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);
$jetzt=$datum.'-'.$uhrzeit;
$datei = fopen("/var/www/mysqlbackup-log","a");
fwrite($datei, "\n ### ".$jetzt.": ");
fwrite($datei, "MySQL-Backup:");
$dumpuser = "admin";
$dumppass = "*****";
$dumpbase = "bg_main";
$pfad = "/var/www/mysql-backup/";
exec( "mysqldump --user=$dumpuser --password=$dumppass --add-drop-table $dumpbase >\"" . $pfad.$dumpbase . " - " . $jetzt . ".sql\"");
rewind($datei);
fwrite($datei, " ERLEDIGT! ");
// Hier kommen später noch weitere Funktionen hin
fclose($datei);
exit();
?>
Ob ich die ersten drei Zeilen schreibe, oder nicht, es kommt immer eine leere Email.
Die UTF-8 Codierung bau ich später noch ein, ich hab jetzt nur keine Zeit mehr.
Es wäre schön, wenn wir den Fehler, der die Email verursacht noch finden würden, aber ich glaube notfalls kann ich mit einer Email am Tag leben.
bruno1