El comando phpunit -v me da el error require_once... ¿qué le pasa a mi PEAR?

Según el título, corriendo phpunit -v en una nueva instalación de PHPUnit PEAR me da una require_once error fallido Aquí hay información adicional, espero que alguien pueda ayudarme con esto.

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

Call Stack:
    0.0005     326744   1. {main}() C:\WAMP\PEAR\phpunit:0
    0.0011     369184   2. require('C:\WAMP\PEAR\pear\PHPUnit\Autoload.php') C:\WAMP\PEAR\phpunit:43


Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;C:\WAMP\PEAR;C:\WAMP\PEAR\pear\PHPUnit') in C:\WAMP\PEAR\pear\PHPUnit\Autoload.php on line 45

Call Stack:
    0.0005     326744   1. {main}() C:\WAMP\PEAR\phpunit:0
    0.0011     369184   2. require('C:\WAMP\PEAR\pear\PHPUnit\Autoload.php') C:\WAMP\PEAR\phpunit:43



    php -v

PHP 5.3.14 (cli) (built: Jun 13 2012 18:51:28) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.2.0, Copyright (c) 2002-2012, by Derick Rethans

`pear version`:

PEAR Version: 1.9.4
PHP Version: 5.3.14
Zend Engine Version: 2.3.0
Running on: Windows NT MARCO-PC 6.1 build 7601 (Windows 7 Home Premium Edition Service Pack 1) i586

    pear config-get php_dir

C:\WAMP\PEAR\pear

    echo %path% (only relevant paths)
C:\WAMP\PHP;C:\WAMP\PEAR;

    echo %PHP_PEAR_BIN_DIR%
C:\WAMP\PEAR

    echo %PHP_PEAR_DATA_DIR%
C:\WAMP\PEAR\data

    echo %PHP_PEAR_DOC_DIR%
C:\WAMP\PEAR\docs

    echo %PHP_PEAR_INSTALL_DIR%

C:\WAMP\PEAR\pear

    echo %PHP_PEAR_PHP_BIN%

C:\WAMP\PHP\php.exe

    echo %PHP_PEAR_SYSCONF_DIR%

C:\WAMP\PEAR

    echo %PHP_PEAR_TEST_DIR%

C:\WAMP\PEAR\tests

    pear list -c pear.phpunit.de

    INSTALLED PACKAGES, CHANNEL PEAR.PHPUNIT.DE:
    ============================================
    PACKAGE            VERSION STATE
    File_Iterator      1.3.1   stable
    PHPUnit            3.6.12  stable
    PHPUnit_MockObject 1.1.1   stable
    PHP_CodeCoverage   1.1.3   stable
    PHP_Invoker        1.1.0   stable
    PHP_Timer          1.0.2   stable
    PHP_TokenStream    1.1.3   stable
    Text_Template      1.1.1   stable

preguntado el 10 de septiembre de 12 a las 22:09

Bastante obvio.. el File/Iterator/Autoload.php el archivo no está presente. -

@MarcB, ¿cómo es esto posible? Instalé PHPUnit como se sugirió... -

El hecho de que phpunit esté instalado no significa que todo de lo que depende lo esté. -

Puedes mostrar pear list producción. -

@DarrenCook pregunta actualizada, gracias por ayudar. -

2 Respuestas

Comprobar dependencias

Si recientemente actualizó a PHPUnit 3.6, existe la posibilidad de que todavía tenga instalada una versión anterior de File_Iterator y ese sea el problema (basado en un vago recuerdo del mismo error).

Puede verificar las versiones de los paquetes instalados con:

pear list -c pear.phpunit.de

Si algo parece no estar bien, o simplemente para asegurarse, actualice PHPUnit para asegurarse de que esté en la última versión y también todas las dependencias:

$ pear update-channels
$ pear upgrade phpunit/PHPUnit
Did not download optional dependencies: phpunit/PHP_Invoker, use --alldeps to download automatically
phpunit/PHPUnit can optionally use package "phpunit/PHP_Invoker" (version >= 1.1.0)
phpunit/PHPUnit_MockObject can optionally use PHP extension "soap"
downloading PHPUnit-3.6.12.tgz ...
Starting to download PHPUnit-3.6.12.tgz (119,220 bytes)
..........................done: 119,220 bytes
downloading File_Iterator-1.3.1.tgz ...
Starting to download File_Iterator-1.3.1.tgz (5,157 bytes)
...done: 5,157 bytes
downloading PHP_CodeCoverage-1.1.3.tgz ...
Starting to download PHP_CodeCoverage-1.1.3.tgz (132,726 bytes)
...done: 132,726 bytes
downloading PHPUnit_MockObject-1.1.1.tgz ...
Starting to download PHPUnit_MockObject-1.1.1.tgz (19,897 bytes)
...done: 19,897 bytes
downloading PHP_TokenStream-1.1.3.tgz ...
Starting to download PHP_TokenStream-1.1.3.tgz (9,860 bytes)
...done: 9,860 bytes
upgrade ok: channel://pear.phpunit.de/File_Iterator-1.3.1
upgrade ok: channel://pear.phpunit.de/PHPUnit_MockObject-1.1.1
upgrade ok: channel://pear.phpunit.de/PHP_TokenStream-1.1.3
upgrade ok: channel://pear.phpunit.de/PHP_CodeCoverage-1.1.3
upgrade ok: channel://pear.phpunit.de/PHPUnit-3.6.12
$ phpunit -v
PHPUnit 3.6.12 by Sebastian Bergmann.

Comprobar la ruta de inclusión

si tiene la versión apropiada de File_Iterator (y otras dependencias) instalada y File/Iterator/Autoload.php falta: no está instalado en ningún lugar donde php lo esté buscando. Usar pear list-files phpunit/File_Iterator para ver exactamente dónde Pear cree que está el archivo y verificar que el archivo existe.

Si es así, entonces la raíz de pera no está en tu camino, agrégala y listo.

Respondido el 13 de Septiembre de 12 a las 10:09

El problema (como puede ver en la respuesta) es que phpunit es 3.6.12 y File_Iterator 1.3.1, exactamente como el suyo. Pero para mí no está funcionando. - gremo

C:\WAMP\PEAR\pear\File\Iterator\Autoload.php está presente. Según la documentación pera.php.net/manual/es/… php.ini debería apuntar a la carpeta principal de pera (es decir, C:\WAMP\PEAR). - gremo

con eso deberías tener C:\WAMP\PEAR\pear en su ruta de inclusión. Alternativamente: hacer cualquier los paquetes de pera funcionan? Parece que PHPUnit es simplemente lo primero en el cli que está usando con las dependencias de pera. - AD7seis

Hiciste mi día hombre. Es como dijiste: C:\WAMP\PEAR\pear y NO C:\WAMP\PEAR. Muchas gracias por señalarme ;) - gremo

Corral pear list -c pear.phpunit.de para ver lo que ha instalado.

Deberías ver un resultado como este:

Installed packages, channel pear.phpunit.de:
============================================
Package            Version State
File_Iterator      1.3.1   stable
PHPUnit            3.6.11  stable
PHPUnit_MockObject 1.1.1   stable
PHP_CodeCoverage   1.1.2   stable
PHP_Timer          1.0.2   stable
PHP_TokenStream    1.1.3   stable
Text_Template      1.1.1   stable

Probablemente te estés perdiendo el primero (al menos). Puede revisar e instalar cada dependencia, pero la forma más fácil es pear install -a pear.phpunit.de/PHPUnit. Las -a significa obtener todas las dependencias, y funciona incluso cuando ya tiene PHPUnit instalado. Después de ejecutarlo en el sistema anterior, actualizó PHPUnit a 3.6.12 y también agregó PHP_Invoker, que parece que me faltaba.

Installed packages, channel pear.phpunit.de:
============================================
Package            Version State
File_Iterator      1.3.1   stable
PHPUnit            3.6.12  stable
PHPUnit_MockObject 1.1.1   stable
PHP_CodeCoverage   1.1.3   stable
PHP_Invoker        1.1.0   stable
PHP_Timer          1.0.2   stable
PHP_TokenStream    1.1.3   stable
Text_Template      1.1.1   stable

Nota la -a flags también obtiene dependencias opcionales. Si eres minimalista eso te puede molestar :-)

Respondido el 11 de Septiembre de 12 a las 08:09

Según pear list -c pear.phpunit.de ya tengo File_Iterator! ¿Así que qué hay de malo? - gremo

Probaste el pear install -a pear.phpunit.de/PHPUnit comando (como root)? Si nada necesita ser actualizado, no hará nada. Tal vez tienes una versión que no coincide. - cocinero darren

Gracias por tu tiempo. Encontré el error en la respuesta AD7six. Era la ruta de inclusión de la pera. - gremo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.