PHPUnit: attention: require (PHPUnit / Autoload.php): n'a pas réussi à ouvrir le flux: aucun fichier ou répertoire de ce type dans /usr / local / bin/phpunit sur la ligne 42

lors de l'exécution

  • phpunit

j'obtiens l'erreur

Warning: require(PHPUnit/Autoload.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 42

Fatal error: require(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.:') in /usr/local/bin/phpunit on line 42

/ usr/local/bin / phpunit affiche ce qui suit à la ligne 42:

require 'PHPUnit/Autoload.php';

des suggestions pour corriger cela?

mise à Jour (1):

je manquais php.ini dans /etc/, j'ai donc un lien symbolique pour lire les MAMP php.ini. Maintenant, je reçois

php -r 'foreach (explode(":", get_include_path()) as $path) echo $path . PHP_EOL;'
.
/Applications/MAMP/bin/php/php5.3.6/lib/php
/usr/local/bin/pear
/usr/local/share/pear/PHPUnit

exécution

  • phpunit

est en cours d'exécution, mais ne fournit aucune sortie.

des suggestions que vérifier ensuite?

mise à Jour (2):

probablement la cause profonde de cette question est liée à la question

17
demandé sur Community 2011-12-01 01:37:03

6 réponses

  1. Obtenir la plus récente de php archive de poire curl http://pear.php.net/go-pear.phar > go-pear.php
  2. installez l'archive avec sudo php -q go-pear.php

pendant l'installation, il détecte si include_path dans votre php.ini ne contient pas le répertoire php PEAR. Vous pouvez choisir de le laisser réparer automatiquement pour vous lorsque l'option.

12
répondu warhod 2012-01-18 21:46:25

j'ai rencontré ce problème lorsque je courais phpunit.phar à partir de mon répertoire local, mais PHPUnit est aussi installé comme une dépendance de compositeur. Supprimer la dépendance de PHPUnit composer a résolu mon problème.

5
répondu edan 2014-07-24 18:21:50

vous devez avoir le dossier qui contient les fichiers source de PHPUnit sur votre PHP include path. Aussi,PHPUnit/Autoload.php a été ajouté en 3.6, et il est possible que vous ayez un ancien 3.5.x dossier source à la place. Vérifiez les dossiers énumérés en utilisant

php -r 'foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;'

(ou Windows)

php -r"foreach (explode(':', get_include_path()) as $path) echo $path . PHP_EOL;"

et assurez-vous que l'un d'entre eux contient un PHPUnit dossier Autoload.php.

mise à Jour: en ce qui concerne votre mise à jour, vous voulez probablement supprimer /usr/local/share/pear/PHPUnit à partir de le chemin include parce que vous incluez PHPUnit/Autoload.php qui devrait être situé dans /usr/local/share/pear qui est déjà dans le chemin de l'.

Pour vous assurer que PHPUnit est d'abord exécuter phpunit --version vous pouvez donc voir la version installée. PHPUnit instancie tous les cas de test qu'il prévoit d'exécuter avant de produire quoi que ce soit. Si l'un de vos cas de test provoque une erreur fatale lors du chargement, parfois aucune sortie n'est affichée. C'est très frustrant. Commencez par créer le cas de test le plus simple possible que ne pas utiliser n'importe quel de votre code.

class MyTest extends PHPUnit_Framework_TestCase {
    function testThatItWorks() {
        self::assertTrue(true);
    }
}

L'exécution de cet essai devrait produire un seul essai de réussite. Essayez-le et collez ce que vous voyez dans votre question.

5
répondu David Harkness 2015-07-14 17:51:51

pour ajouter aux réponses précédentes: revérifiez avec php.le fichier ini est chargé et assurez-vous d'éditer ce fichier avec des chemins supplémentaires. J'ai utilisé ce qui suit pour vérifier le php chargé.ini

php -r 'phpinfo();'

qui m'a dit que le php chargé.le fichier ini était / private/etc / php.ini

puis j'ai utilisé "which" pour me dire où phpunit avait été installé:

which phpunit

puis j'ai ajouté ce chemin vers le php.fichier ini, donc il a fini par ressembler à ceci:

;***** Added by go-pear
include_path=".:/Users/admin/pear/share/pear:/php/includes:/usr/bin:/usr/lib/php/"

seulement après que j'ai fait tout ce qui a fait le "phpunit --version" et les autres commandes fonctionnent comme prévu.

3
répondu Everett 2017-08-11 22:59:12

il est à noter que la plupart des utilisateurs qui font face au problème rencontré ici doivent exécuter la commande

$ phpunit

à partir de l'invite de commande. quand ils obtenir l'erreur ci-dessus. Ce que la plupart d'entre nous ne comprennent pas à propos de la vraie question Est que le PHP utilisé sur l'invite de commande sera généralement très différent de celui qui exécute des choses pour vous dans votre serveur web. Personnellement j'utilise lampp et même si j'avais correctement installé phpunit en utilisant poire avec succès, j'ai échoué à réaliser cette partie essentielle pendant des heures.

Remède - pour chaque fois que vous avez besoin d'exécuter un script PHP qui nécessite des ressources dans include_path, assurez-vous que php.ini pour le binaire PHP respectif que vous utilisez est fourni de manière adéquate. cas et point dans mon installation ubuntu 12.04 avec xampp mes deux binaires php incluent

  • la ligne de commande un je.e php5-cli trouve dans /etc/php5/cli/ répertoire
  • le xampp un I. e php qui est utilisé par apache pour servir mes pages trouvées dans /opt/lampp/etc/php.ini

les deux php.les fichiers ini doivent avoir votre déclaration include_path souhaitée et correcte pour que vous démarriez correctement les scripts de ligne de commande et serverside(scripts servis par apache).

retour à notre sujet après avoir correctement configuré le php.ini n'oubliez pas de

  • redémarrez Apache pour que le serveur web sélectionne votre les modifications
  • redémarrez votre terminal / session en ligne de commande pour que l'invite cli sélectionne vos modifications

erreurs courantes qui vous causent des problèmes lors du changement de fichiers dans les systèmes Linux/*nix

  • n'oubliez pas d'exécuter chwon pour posséder le php.fichier ini ou vous ne pourrez même pas les éditer

  • n'oubliez pas d'exécuter chmod et de changer les valeurs pour vous permettre de sauvegarder vos modifications après lesquelles vous pouvez revenir tout (contrôle d'accès sur Fichier I. chwon et chmod à l'état précédent) à la façon dont ils étaient et il devrait être ok après redémarrage du terminal et apache.

Bonne Chance

2
répondu chitwarnold 2013-01-30 22:58:42

La remarque de Howard Lo sur Mac OSX est très utile

  1. vérifiez si vous avez un php.ini installé dans /private/etc. Si pas de problème avec la commande:

    $ sudo cp/private/etc / php.ini.défaut /private/etc/php.ini

  2. Obtenir la plus récente de php archive de poire

    $ curl http://pear.php.net/go-pear.phar > Go-pear.php

  3. installez l'archive avec

    $ sudo php-q go-pear.php

  4. lors de l'installation, il détecte si include_path dans votre php.ini n' ne contient pas le répertoire PHP de PEAR. Vous pouvez choisir de laisser le réparer automatiquement pour vous lorsque l'option.

  5. Après ces étapes, j'ai dû installer phpunit à nouveau en utilisant les commandes suivantes:

    $ chaîne sudo pear-discover pear.phpunit.de

    $ sudo Pear channel-discover components.ez.Non!--3-->

    $ chaîne sudo pear-discover pear.symfony-project.com

    $ sudo pear install phpunit / PHPUnit

Merci beaucoup à Howard Lo et Sebastian Perez.

2
répondu Harm 2013-10-28 13:29:15