Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Binaries in the archive root are not extracted

Ouverte Adaptée aux débutants
#59 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
70/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
php
Domaine
cli

Piste de recherche

Le bug se trouve dans extract() dans src/Archive/PharAwareArchive.php, qui rouvre $this->archive (l'itérateur PharData) au lieu du chemin de l'archive, de sorte que seule la première entrée est parcourue. Commence par lire cette méthode, puis retire #[Skip] de extractFindsBinaryInArchiveRoot dans tests/Unit/Archive/PharAwareArchiveTest.php et exécute vendor/bin/testo --filter=extractFindsBinaryInArchiveRoot. C'est terminé lorsque ce test passe et qu'une archive plate ou un binaire situé hors de la première entrée de premier niveau s'extrait correctement. Consulte d'abord les mainteneurs, car l'issue #49 pourrait remplacer ce code.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
PHP
Étoiles
30
Forks
15
Merge moyen
45 min
PR mergées (30 j)
11

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de roadrunner-php/cli

Toutes les issues de roadrunner-php/cli

Issues similaires

Plus d'issues PHP

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.