dedlfix: Files zippen auf einem (unix/linux) NAS mit php/apache/mysql

Beitrag lesen

Tach!

$arItems[]='/var/log/syslog'                           #Eine Datei, es können mehr sein
$arItems[]='/var/log/apache/'                          #Ein Verzeichnis, es können mehr sein

Semikolons, es könnten zwei mehr sein ;)

unset ($arItems);
foreach ($arItems as $item) {

Wirklich unset() oder etwa reset()? Ersteres wäre kontraproduktiv, letzeres bei foreach hyperliquid.

$itemsShellEscaped .= escapeshellarg($item).' ';    # escapeshellarg() nicht entfernen!
                                 # Nur bei fixen Dateien, dann manuell escapen...

Lieber escapeshellarg() lassen, das stört auch dabei nicht. Anderenfalls müsste man zum Beispiel Dateinamen mit Leerzeichen drin immer mit Backslash-Escaping statt im lesbaren Rohformat notieren und dabei auch noch das Escaping von PHP-String-Literals beachten.

$arItems[] = '/home/reports/Report\ vom\ heutigen\ Tag.csv';

Also zumindest bei "double quoted" String, braucht es zwei Backslashes, bei 'single quoted' reicht auch eins.

echo file_get_contents($tempfile);

readfile(). Liest und sendet häppchenweise und nicht den Brocken komplett in den Speicher.

Ausgaben, Fehler:</br> . htmlentities(implode('</br>', $arReturns)) . '

htmlspecialchars(). Oder hast du einen Grund für htmlentities(), z.B. wegen ungelöster Zeichenkodierungsprobleme? Und Implodieren mit \n, und nl2br() nach dem htmlspecialchars() anwenden.

dedlfix.