2012-01-02 16 views
26

Recibo este error mientras trato de ejecutar testclass en phpunit.error fatal 'File/Iterator/Autoload.php' no encontrado al ejecutar 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' 

¿Alguien podría dar solución a esto?

Nota: Estoy utilizando Windows 7.

Gracias,

+0

* (relacionado) * (la corrección funcionará): http://stackoverflow.com/questions/8078707/cannot-get-phpunit-working – edorian

+0

* (nota) * Por lo que yo sé, esto no es un duplicado y dado que se trata de un problema de instalación, tal vez la migración de SF, pero es una verdadera pregunta :) – edorian

+0

Encontré un error similar también. Solución simple para esto en caso de que esté usando compositor, asegúrese de tener la última versión estable de PHPUnit, p. 5.5, y todo funcionará. – ProfNandaa

Respuesta

10

Su instalación PHPUnit se rompe. La solución más sencilla para esto es

pear install --force --alldeps phpunit/phpunit 

y ver si lo que funcionó.

Necesitará la versión de pera más reciente 1.9.4. Si no tiene esa versión, instálela usando el go-pear.phar. Si está ejecutando xammp para algo, no intente reparar la instalación de pera que envía. Usualmente es MUCHO más fácil reinstalarlo.

Si desea se puede tratar de simplemente instalar el paquete faltante también:

pear install phpunit/File_Iterator 

(añadir un --force si la pera le dice que ya está instalado)

23

Una posible razón de que esto podría suceder es que su php include_path no está configurado correctamente. Asegúrese de tener disponible la ruta adecuada para PEAR. Para mi instalación de WAMP sería:

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

Sin embargo, lo más probable es que sea diferente en su sistema.

Una nota al margen, usted querrá actualizar tanto su apache php.ini como su php.ini ubicado en su carpeta de instalación de PHP. CLI el php.ini predeterminado, y las solicitudes web (y muchas veces otro software para el que pueda estar usando paquetes PEAR) usarán apache php.ini.

Espero que esto ayude.

+3

Esto es exactamente lo que era para mí, aunque no me di cuenta hasta que [RTFM] (http://pear.php.net/manual/en/installation.checking.php). Como nota al margen, ';' para windows y ':' para osx/unix como el separador de directorios. – George

+0

Funcionó para mí también. En Ubuntu, mi ruta es ".:/Usr/share/pear" en caso de que ayude a alguien. –

+0

"Yo también" (lo siento), en mi caso fue debido a una actualización de PHP a través de puertos Mac que tenían instalada una nueva configuración de php.ini, pero no se había copiado a través de la ruta de inclusión generada por pera. – scipilot

4

Después de 2 días de la post lectura, por fin he resuelto con guías:

PC limpio de retención/instalación dañada de PHPUnit LINK

y reinstalado con esta guía LINK

3

Para mí, el la corrección era simple (Ubuntu 12.04). Primero hice una búsqueda para asegurarse de que existiera el archivo y donde se encontraba:

locate Autoload.php 

que debe devolver resultados similares a esta:

/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 

Entonces revisé mi include_path, que se estableció correctamente en /etc/php5/apache2/php.ini, pero todavía estaba comentado en /etc/php5/cli/php.ini (la interfaz de línea de comandos).

descomentando esta línea trabajó para mí:

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

bastante básico que sé, pero siempre las pequeñas cosas cuando la creación de una nueva máquina ;-)

2

que tenía el mismo problema usando PHP 5.3 en OSX 10.6 usando la configuración del servidor incorporado.

Me di cuenta de que mientras PHPUnit se instalaba satisfactoriamente en/usr/lib/php, Autoload.php intentaba (línea 45) cargar el File Iterator desde su directorio actual (/ usr/lib/php/PHPUnit) que el directorio donde Pear lo estaba instalando (/ usr/lib/php/File). ¿Podría ser esto un error en el instalador de Pear?

Un sencillo ln-usr/lib/php/File/usr/lib/php/PHPUnit/File resolvió el problema.

+0

Esto es un kludge. La verdadera razón es un include_path mal configurado en php.ini. Esto simplemente enmascara el problema real y puede volver a romperse fácilmente si las cosas cambian ligeramente. –

+1

@Tim, gracias por la explicación, tuve esta pregunta en primer lugar y casi trato de cambiar la ruta "require_once". Y luego descárguelo modificando php.ini. – zhihong

7

Comprobación de configuración de pera me ayudó a encontrar este QUICKY:

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" 
+0

Este método funciona para mí. En Ubuntu 12.04, primero encuentre el php_dir, que es "/ usr/share/php", luego use "locate php.ini" para encontrar su ubicación correcta. Mi caso es "/etc/php5/cli/php.ini", luego agregar/modificar el include_path = ".:/Usr/share/php" – zhihong

3

Todo tipo de cosas agradables que he leído en este caso. Primero compruebe dónde se encuentra Autoload.php. Uso:

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

Asumo que sus archivos se encuentran en:

/usr/local/pear/share/pear 


He instalado de Apple OSX 10.8.4 y MAMP MAMP-PRO y tengo varias otras instalaciones de PHP.
Para el último que he hecho lo siguiente: En primer lugar comprobar si hay una php.ini en el directorio: /private/etc
Si no, no:

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

añadir las siguientes líneas en el parte inferior del archivo 'php.ini ':

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

Done.

0

Además, al usar el paquete de servidor abierto, uno puede notar que informa demasiado corto include_path.

Para solucionar este en Windows 7 que puede hacer

cd c:\Windows 
mklink php.ini c:\OpenServer\userdata\temp\config\php.ini 
1

estoy usando Ubuntu 14.04 y yo instalado PHPUnit a través de Ubuntu Software Center, que no funcionaba.

Finalmente lo quito y me seguido las instrucciones de here

wget https://phar.phpunit.de/phpunit.phar 
chmod +x phpunit.phar 
sudo mv phpunit.phar /usr/local/bin/phpunit 
0

que tenía el mismo problema con Windows 7 y xampp (PHP 5.6.11), he intentado todas pera y volver a instalar PHPUnit pero no lo hizo trabajo. Cuando revisé el permiso del directorio C: \ xammp \ php \ pear, era de solo lectura, después de cambiar el permiso, comenzó a funcionar.

0

Mira el error:

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

El XAMPP está tratando de localizar el archivo en include_path .;C:\php\pear pero el camino para la pera es .;C:\xampp\php\pear.

Establezca el camino correcto para la pera y funcionará. Acabo de hacerlo.

Cuestiones relacionadas