Binaries in the archive root are not extracted
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 70/100
Direzione di ricerca
Il bug si trova in extract() in src/Archive/PharAwareArchive.php, che riapre $this->archive (l'iteratore PharData) invece del percorso dell'archivio, quindi viene cercata solo la prima voce. Inizia leggendo quel metodo, poi rimuovi #[Skip] da extractFindsBinaryInArchiveRoot in tests/Unit/Archive/PharAwareArchiveTest.php ed esegui vendor/bin/testo --filter=extractFindsBinaryInArchiveRoot. È completato quando quel test passa e un archivio piatto o un binario al di fuori della prima voce di primo livello viene estratto. Confrontati prima con i maintainer, perché la issue #49 potrebbe sostituire questo codice.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- PHP
- Stelle
- 30
- Fork
- 15
- Merge medio
- 9h 37m
- PR unite (30g)
- 16
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di roadrunner-php/cli
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
roadrunner-php/cli#67 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di roadrunner-php/cli
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
matomo-org/device-detector#8405 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
sync-en
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
sync-en
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 4 giorni