Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Binaries in the archive root are not extracted

Offen Anfängerfreundlich
#59 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
70/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
php
Bereich
cli

Rechercherichtung

Der Fehler liegt in extract() in src/Archive/PharAwareArchive.php. Die Methode öffnet $this->archive (den PharData-Iterator) erneut, statt den Archivpfad zu verwenden, sodass nur der erste Eintrag durchsucht wird. Lies zuerst diese Methode. Entferne danach #[Skip] von extractFindsBinaryInArchiveRoot in tests/Unit/Archive/PharAwareArchiveTest.php und führe vendor/bin/testo --filter=extractFindsBinaryInArchiveRoot aus. Fertig ist es, wenn dieser Test besteht und sowohl ein flaches Archiv als auch eine Binärdatei außerhalb des ersten Eintrags der obersten Ebene entpackt werden. Stimme dich zuerst mit den Maintainern ab, da Issue #49 diesen Code möglicherweise ersetzt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

Description

PharAwareArchive::extract() cannot extract a binary from the archive root. For a zip that contains LICENSE and rr at the top level, extraction fails with:

RecursiveDirectoryIterator::__construct(phar:///tmp/.../rr.zip/rr): Failed to open directory: operation failed

extract() reopens the archive with $this->open($this->archive). $this->archive is the PharData iterator itself, so its getPathname() returns the current entry, i.e. the first file in the archive, not the archive. Only that first entry is searched:

  • if it is a directory, the files inside it are found;
  • if it is a file, the reopen fails.

Current RoadRunner archives put everything in one top-level directory (roadrunner-<version>-<os>-<arch>/rr), which is the only reason extraction works today. A flat archive, or a binary outside the first top-level entry, cannot be installed.

Steps to reproduce

  1. Remove #[Skip] from PharAwareArchiveTest::extractFindsBinaryInArchiveRoot.
  2. Run vendor/bin/testo --filter=extractFindsBinaryInArchiveRoot.

Additional context

Archive handling may be replaced by DLoad in #49, in which case this code goes away.

Vorherrschende Sprache
PHP
Sterne
30
Forks
15
Ø Merge
45 Min.
Gemergte PRs (30 T.)
11

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus roadrunner-php/cli

Alle Issues in roadrunner-php/cli

Ähnliche Issues

Weitere Issues zu PHP

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.