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
6 réponses
- Obtenir la plus récente de php archive de poire
curl http://pear.php.net/go-pear.phar > go-pear.php
- 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.
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.
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.
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.
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
La remarque de Howard Lo sur Mac OSX est très utile
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 Obtenir la plus récente de php archive de poire $ curl http://pear.php.net/go-pear.phar > Go-pear.php installez l'archive avec $ sudo php-q go-pear.php 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. 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.