Неустранимая ошибка 'File / Iterator / Autoload.php' не найдена при запуске phpunit - PullRequest
26 голосов
/ 02 января 2012

Я получаю эту ошибку при попытке запустить testclass в phpunit.

C:\xampp\htdocs\unittest>phpunit UnitTest usertest.php
PHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45
PHP Stack trace:
PHP   1. {main}() C:\xampp\php\phpunit:0
PHP   2. require() C:\xampp\php\phpunit:41

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45

Call Stack:
    0.0004     325352   1. {main}() C:\xampp\php\phpunit:0
    0.0026     366520   2. require('C:\xampp\php\pear\PHPUnit\Autoload.php')xampp\php\phpunit:41

PHP Fatal error:  require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45
PHP Stack trace:
PHP   1. {main}() C:\xampp\php\phpunit:0'

Может кто-нибудь дать решение этой проблемы?

Примечание: я использую Windows 7.

Спасибо,

Ответы [ 11 ]

23 голосов
/ 05 января 2012

Возможная причина, по которой это может произойти, заключается в том, что ваш php include_path установлен неправильно.Пожалуйста, убедитесь, что у вас есть соответствующий путь к PEAR.Для моей установки WAMP это будет:

include_path=".;C:\wamp\bin\php\php5.3.8\PEAR\PEAR"

Однако, скорее всего, это будет отличаться в вашей системе.

Примечание: вы захотите обновить оба ваших apache php.ini, а также ваш php.ini, расположенный в папке установки PHP.CLI по умолчанию php.ini и веб-запросы (и часто другие программы, для которых вы можете использовать пакеты PEAR) будут использовать apache php.ini.

Надеюсь, это поможет.

10 голосов
/ 02 января 2012

Ваша установка phpunit не работает. Самое простое решение для этого -

pear install --force --alldeps phpunit/phpunit

и посмотрите, что получилось.

Вам понадобится самая последняя версия груши 1.9.4. Если у вас нет этой версии, установите ее, используя go-pear.phar. Если вы что-то запускаете из xammp, не пытайтесь исправить установку груши, которую они поставляют. Обычно его намного проще переустановить.

Если хотите, попробуйте просто установить отсутствующий пакет:

pear install phpunit/File_Iterator

(добавить --force, если pear говорит вам, что он уже установлен)

7 голосов
/ 03 июля 2013

Проверка конфигурации груши помогла мне быстро найти это:

bash-3.2# pear config-show | grep php_dir
PEAR directory                 php_dir          /usr/local/pear/share/pear

bash-3.2# vi /etc/php.ini
include_path = ".:/php/includes:/usr/local/pear/share/pear"
4 голосов
/ 18 марта 2012

Через 2 дня после прочтения, наконец, я решил с помощью руководств:

Очистите компьютер с помощью удержания / поврежденной установки Phpunit LINK

и переустановите с этимруководство ССЫЛКА

3 голосов
/ 30 июля 2013

Все виды хороших вещей, которые я читал на этом. Сначала проверьте, где находится файл Autoload.php. Использование:

$ find . -name 'Autoload.php' -type f

Я предполагаю, что ваши файлы находятся в:

/usr/local/pear/share/pear


У меня установлены Apple OSX 10.8.4 MAMP и MAMP-PRO, и у меня есть несколько других установок PHP.
Для последнего я сделал следующее: Сначала проверьте, есть ли в каталоге php.ini : /private/etc
Если нет, выполните:

$ sudo cp /private/etc/php.ini.default /private/etc/php.ini

Добавьте следующие строки внизу файла ' php.ini ':

; *** Added by <your-name> ****
include_path=".:/usr/local/pear/share/pear"
; *** Ended addition ****

Готово.

3 голосов
/ 31 мая 2012

Для меня исправление было простым (Ubuntu 12.04).Сначала я выполнил поиск, чтобы убедиться, что файл существует и где он находится:

locate Autoload.php

, который должен возвращать результаты, подобные следующим:

/usr/share/php/File/Iterator/Autoload.php
/usr/share/php/PHP/CodeCoverage/Autoload.php
/usr/share/php/PHP/Depend/Autoload.php
/usr/share/php/PHP/Invoker/Autoload.php
/usr/share/php/PHP/Timer/Autoload.php
/usr/share/php/PHP/Token/Stream/Autoload.php
/usr/share/php/PHPCPD/Autoload.php
/usr/share/php/PHPUnit/Autoload.php
/usr/share/php/PHPUnit/Framework/MockObject/Autoload.php
/usr/share/php/PHP_CodeBrowser/Autoload.php
/usr/share/php/Text/Template/Autoload.php

Затем я проверил мой include_path, которыйбыл правильно установлен в /etc/php5/apache2/php.ini, но все еще был закомментирован в /etc/php5/cli/php.ini (интерфейс командной строки).

Раскомментирование этой строки работало для меня:

include_path = ".:/usr/share/php:/usr/include/php5"

Довольно простой, я знаю, но это всегда мелочи при настройке новой машины; -)

2 голосов
/ 06 декабря 2012

У меня была такая же проблема с использованием PhP 5.3 на OSX 10.6 с использованием конфигурации встроенного сервера.

Я заметил, что когда PHPUnit успешно устанавливался в / usr / lib / php, Autoload.php (строка 45) пытался загрузить итератор файлов из своего текущего каталога (/ usr / lib / php / PHPUnit), а не каталог, в который его устанавливал Pear (/ usr / lib / php / File). Может ли это быть ошибкой в ​​установщике Pear?

Простая ln -s / usr / lib / php / File / usr / lib / php / PHPUnit / File решила проблему.

1 голос
/ 11 февраля 2015

Я использую Ubuntu 14.04 , и я установил phpunit через Ubuntu Software Center, который не работал.

Наконец я удалил его и следовал инструкциям здесь

wget https://phar.phpunit.de/phpunit.phar  
chmod +x phpunit.phar  
sudo mv phpunit.phar /usr/local/bin/phpunit
0 голосов
/ 12 мая 2016

Посмотрите на ошибку:

 (include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php

Xampp пытается найти этот файл в include_path .;C:\php\pear Но путь для груши - .;C:\xampp\php\pear.

Установите правильное значениепуть для груши, и это будет работать.Я только что сделал это.

0 голосов
/ 21 августа 2015

У меня была такая же проблема с windows 7 и xampp (php 5.6.11), я попробовал переустановить pear и phpunit, но это не сработало.Когда я проверил разрешение каталога C: \ xammp \ php \ pear , он был доступен только для чтения. После изменения разрешения он начал работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...