php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-01-2022, 10:12
mfeske
 Registrierter Benutzer
Links : Onlinestatus : mfeske ist offline
Registriert seit: Jan 2022
Beiträge: 1
mfeske befindet sich auf einem aufstrebenden Ast
Standard Dateiliste rekursiv mit Unterordner und ZIP Archiv

Hallo zusammen,
ich möchte für einen bestimmten Ordner und seine Unterordner eine Dateiliste erstellen und dann in ein ZIP Archiv packen. Mein bisheriger Ansatz kam aus dem php.net diesen habe ich auch soweit zum Laufen bekommen, das mir eine Dateiliste für das entsprechende Verzeichnis und auch die Unterverzeichnisse erstelle wird. Problematisch ist jedoch die Eliminierung der Ausgabe . für die Unterverzeichnisse.
PHP-Code:
$password "meinpasswort";
    
$sourcefolder "/meinpfad/";
    
$dirlist = new RecursiveDirectoryIterator($sourcefolder);
    
$filelist = new RecursiveIteratorIterator($dirlist);
    
//how many file can be added before a reopen is forced?
    
$filelimit 245;
    
// Defines the action
    
$file tempnam("/meinpfad/_tmp""zip");
    
#zip archiv erstellen
    
$zip = new ZipArchive();
    
$zippath "/meinpfad/_zip/";
    
$zipname "meinfile" ".zip";
    
$zipfile $zippath $zipname;
    
$res $zip->open("$file"ZipArchive::CREATE);
    if (
$res === TRUE) {
        foreach (
$filelist as $key=>$value) {
            
$path str_replace($sourcefolder""$key);
            
$realpath=realpath($key);
            if ((
$path != ".") && ($path != "..")) {
                
#echo "<pre>";echo "key $key<br>";echo "</pre>";
                #echo "<pre>";echo "path $path<br>";echo "</pre>";
                #echo "<pre>";echo "realpath $realpath<br>";echo "</pre>";
                #todo Problem bei existierenden Unterverzeichnissen test1/. eliminieren
            
if (is_dir($key)) { die($key.' does not exist. Please contact your administrator or try again later.'); }
            if (!
file_exists($key)) { die($key.' does not exist. Please contact your administrator or try again later.'); }
            if (!
is_readable($key)) { die($key.' not readable. Please contact your administrator or try again later.'); }
            if (
$zip->numFiles == $filelimit) {$zip->close(); $zip->open($file) or die ("Error: Could not reopen Zip");}
            
$zip->addFile(realpath($key), $path) or die ("ERROR: Could not add file: $key </br> numFile:".$zip->numFiles);
                
$zip->setEncryptionName($pathZipArchive::EM_AES_256$password);
            }
        }
        
$zip->close();
        
rename ($file$zipfile);
        
$msg "Link zur ZIP-Datei: <a href=\"https://url/$zipname\">https://url/_zip/$zipname</a> Passwort: ";
        
$msgblock="success";
        
$clipboardtext "$password";
        
$message = array("msg"=>$msg"msgblock"=>$msgblock"clipboardtext" => $clipboardtext);
        
$message createMessage ($message);
        echo 
"$message";
    } else {
        
$msg "Fehler beim Erstellen von https://url/_tmp/$file";
        
$msgblock="danger";
        
$clipboardtext "";
        
$message = array("msg"=>$msg"msgblock"=>$msgblock"clipboardtext" => $clipboardtext);
        
$message createMessage ($message);
        echo 
"$message";
        exit;
    } 
Ausgabe:
key /meinpfad/test1/.
path test1/.
realpath /meinpfad/test1
/meinpfad/test1/. does not exist. Please contact your administrator or try again later.

Sofern ich die Unterverzeichnisse entferne funktioniert es.

Gruß
Micha
Mit Zitat antworten
  #2 (permalink)  
Alt 21-01-2022, 20:38
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.800
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Du machst imho diesen Fehler
PHP-Code:
$realpath=realpath($key);
if ((
$path != ".") && ($path != "..")) 
Da musst du doch auf $realpath prüfen. Und wohl den absoluten Pfad mit strpos auf './' und '../' checken.

So auf die Schnelle
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
rekursiv denkproblem dani_o PHP Developer Forum 6 05-04-2008 10:38
Unterordner rekursiv löschen prego Linux und Unix 2 13-09-2005 10:29
Navigation aus Dateiliste Blo Apps und PHP Script Gesuche 1 23-08-2005 22:33
Dateiliste rubaff Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 6 22-06-2005 11:33
rekursiv löschen Citral666 PHP Developer Forum 4 25-04-2004 18:35

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni


 

Aktuelle PHP Scripte

Homepagetools 2022

Kostenloses Gästebuch und Homepagetools für die eigene Homepage. Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.

29.04.2022 freepler | Kategorie: PHP/ Gaestebuch
SF-Shopsystem V1.0

Hier haben wir ein einzigartiges Shopsystem in PHP. Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich. Ausführliche Beschreibung weiter unten.

28.04.2022 Speedcrawler | Kategorie: PHP/ Shops
Anzeigen Markt mit PayPal Bezahl System

Anzeigen Markt Script mit PayPal Bezahl System Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal seine Anzeigen zu schalten, je nach seinem Guthaben.

27.04.2022 Webace_de | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:45 Uhr.