Ankündigung

Einklappen
Keine Ankündigung bisher.

ZipArchive::addFile mit relativem loaken Pfad

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ZipArchive::addFile mit relativem loaken Pfad

    Hallo zusammen

    Ich habe festgestellt, dass relative Pfade nicht in ein ZipArchive gelegt werden obwohl der Rückgabewert "true" ist. Dann sollte es eigentlich ja im Archive sein.

    Beispiel:
    PHP-Code:
    $zip = new ZipArchive;
    if (
    $zip->open('test.zip'ZipArchive::CREATE) === true) {
        
    $zip->addFile('/pfad/zur/datei.txt''/foo/bar/../zoo');
        
    $zip->close();
        echo 
    'ok';
    } else {
        echo 
    'Fehler';

    Nun sollte eigentlich die Datei im '/foo/zoo/neuername.txt' hier sein.

    Wenn ich die ../ weglasse, klappt es.

    Weiss den jemand den Grund? Oder ist das ein Bug? Danke für eure Hilfe im voraus.

  • #2
    Probier mal realpath() aus
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Ja, hatte ich schon versucht, gibt mir dann nichts zurück. Dann muss ich den Pfad eben schon vorher mit realpath() anwenden.

      Ich wollte dies nur wenn ich mal vorher realpath vergesse, dass es dann trotzdem mit /../ funktioniert.

      Danke dir.

      Kommentar


      • #4
        Ich sehe gerade realpath() würde nur für den ersten Parameter Sinn machen.
        Warum machst Du nicht einfach anstatt
        PHP-Code:
        $zip->addFile('/pfad/zur/datei.txt''/foo/bar/../zoo'); 
        die direkte Angabe
        PHP-Code:
        $zip->addFile('/pfad/zur/datei.txt''/foo/zoo'); 
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Weil die Pfade von meinen Migrationen abstammen.
          Wenn ich nun da realpath vergesse anzuwenden, werden die Dateien eben nicht gezippt.

          PHP-Code:
          class AnyComponentMigration implements ComponentMigrationInterface
          {
              use 
          MigrationFilesSupport;

              public function 
          register(): void
              
          {
                  
          // set up files to copy to views, trans, sources directories.
                  
          $this->files('copy', [
                      
          $this->app->dir('migration.view.backend') => __DIR__.'/../View/Article.php'
                  
          ]);        
              }

          Kommentar

          Lädt...
          X