Binaries in the archive root are not extracted
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
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
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
- Remove
#[Skip]fromPharAwareArchiveTest::extractFindsBinaryInArchiveRoot. - 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
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus roadrunner-php/cli
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
roadrunner-php/cli#69 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
roadrunner-php/cli#68 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
roadrunner-php/cli#67 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
roadrunner-php/cli#62 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
roadrunner-php/cli#61 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in roadrunner-php/cli
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 84/100
WordPress/hosting-handbook#506 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Installing a plugin with composer_packages installs dev dependencies and breaks the autoloader (Error 500)Evtl. vergeben @Boy132 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
nginx: static-file locations drop the security headers, and the dotfile deny is matched after themOffenbug Low Security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
backdrop-contrib/commerce#60 ·