error de phpunit require_once ()

79

Recientemente instalé phpunit en mi servidor a través del instalador de pear.

Cuando voy a ejecutar una prueba, aparece el siguiente error:

Advertencia de PHP: require_once (PHPUnit / Util / Filter.php): no se pudo abrir la secuencia: no existe ese archivo o directorio en / usr / bin / phpunit en la línea 44

Error fatal de PHP: require_once (): Falló la apertura requerida 'PHPUnit / Util / Filter.php' (include_path = '.: / Usr / bin / php') en / usr / bin / phpunit en la línea 44

Después de buscar, intenté hacer algunas modificaciones en include_path en mi archivo php.ini en el servidor. Pero eso no ha hecho nada.

¿Alguna idea de lo que podría estar causando esto?

usuario185305
fuente

Respuestas:

123

ACTUALIZACIÓN: A partir de noviembre de 2013 y Ubuntu 12.04, estos 2 comandos deberían ser suficientes:

sudo pear config-set auto_discover 1
sudo pear install pear.phpunit.de/PHPUnit

La siguiente es una respuesta anterior. Es un problema conocido, aunque había pasado casi año y medio. Leer sobre esto aquí

La cobertura del código debe estar instalada para que phpunit funcione correctamente

Lo que debe hacer está cubierto aquí:

instalación de cobertura de código a través de PEAR

Básicamente, debe escribir (con sudo si no tiene permisos, dado que phpunit ya está instalado):

pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear install phpunit/PHP_CodeCoverage
arunas_t
fuente
Recibo un ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_php" ERROR: Unknown Role class: "PEAR_Installer_Role_Pear_Installer_role_data"error en el último paso.
Eray
6
La solución correcta para mí estaba en el primer enlace que diste: bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544/comments/…
EnigmaCurry
2
Tenía que establecer el include_path en ambos archivos php.ini, /etc/php5/apache2/php.ini, /etc/php5/cli/php.ini, y tuvo que hacer que incluye los padres y subdirectorios:include_path = ".:/usr/share/php:/usr/share/php/PEAR"
Placas
7
En Ubuntu 12.04, también tuve que ingresar sudo pear channel-discover pear.symfony.comy luego lo sudo pear install --alldeps phpunit/PHPUnit
logré
2
¡Tomar nota! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ... lo que invalidará esta respuesta.
Madbreaks
34

Tuve este problema en OS X. Lo solucioné con los siguientes comandos que obligan a reinstalar todas las dependencias de php, que incluían un par de paquetes de otros canales que aún no estaban configurados:

sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover components.ez.no
sudo pear install --alldeps phpunit/PHPUnit
Steven Green
fuente
Esta es la única solución que me funcionó en Ubuntu 11.10.
mpen
4
Nvm. Se instaló bien, pero cuando intento ejecutar cualquier prueba real obtengoPHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46
mpen
2
Para mí, hice esto y luego recibí un error que creo que fue resuelto por stackoverflow.com/a/9186866/470749 Ubuntu 12.04
Ryan
1
No funcionó para mí, necesito channel-discover pear.phpunit.depoder instalar phpunit / phpunit, y luego aparece el require_once(PHPUnit/Util/Filter.php)error ... el archivo no está en ninguna parte de mi sistema de archivos.
ashgromnies
¡Tomar nota! You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. ... lo que invalidará esta respuesta.
Madbreaks
13

https://bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544

y especialmente este comentario para ubuntu 11.04 y puede ser también para algunos otros

a pesar de que hice estos pasos como se recomendó anteriormente, no logré que funcionara, pero después de actualizar pear de 1.9.1 a 1.9.2, está funcionando perfectamente, solo haz esto

speshu @ speshu-laptop: ~ $ sudo pear actualización pear

   downloading PEAR-1.9.2.tgz ...
   Starting to download PEAR-1.9.2.tgz (295,120 bytes)
    .....................................................done: 295,120 bytes
    upgrade ok: channel://pear.php.net/PEAR-1.9.2
    PEAR: Optional feature webinstaller available (PEAR's web-based installer)
    PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
    PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
    PEAR: To install optional features use "pear install pear/PEAR#featurename"
jspeshu
fuente
Hice esto tan pronto como instalé PHPUnit y todavía recibí el error, pero la respuesta de @StevenGreen me ayudó =) pero está bien, lo señala =)
Metafaniel
4

https://github.com/sebastianbergmann/php-code-coverage

sb@ubuntu ~ % pear channel-discover pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

sb@ubuntu ~ % pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded

sb@vmware ~ % pear install phpunit/PHP_CodeCoverage
downloading PHP_CodeCoverage-0.9.0.tgz ...
Starting to download PHP_CodeCoverage-0.9.0.tgz (108,376 bytes)
.........................done: 108,376 bytes
install ok: channel://pear.phpunit.de/PHP_CodeCoverage-0.9.0
stanleyhlng
fuente
2

(include_path = '.: / usr / bin / php')

¿Estás seguro de que lo agregaste a include_path?

También podría ayudar si viéramos su archivo ini y el fragmento include_path en él ...

meder omuraliev
fuente
Sí, he probado ese camino y varios otros. Los comentarios aquí están limitados a 600 caracteres, por lo que no estoy seguro de cómo les mostraría mi archivo ini. include_path = ".: / usr / bin / php"
user185305
/ usr / bin es donde viven los ejecutables, no las bibliotecas.
Alister Bulman
2

¡Lo encontré!

Parece que PEAR instaló PHPUnit en / usr / share / pear. No estoy seguro de por qué, pero ahí es donde está. Debe ser una cosa (mt).

De todos modos, estoy listo. Gracias por la ayuda.

usuario185305
fuente
2

Esto también es lo que sucede si tiene una instalación de PHPUnit desactualizada o incompleta. Tenga en cuenta que después de configurar PEAR, debe agregar el canal PHPUnit.de para obtener un paquete actualizado.

Josh Koenig
fuente
2

En mi caso, lo resolví agregando /usr/share/php/PEARal archivo include_path.

Estoy usando Ubuntu 10.04.2.

Marcelo
fuente
1

Si tiene problemas para acceder a los componentes, intente de otra manera.

  1. Instalar pera

    sudo apt-get install php-pear
    
  2. Instale phpunitusando pear.

    pear config-set auto_discover 1
    pear install pear.phpunit.de/PHPUnit
    
  3. Instalar phpunit/ Selenium, pero primero debe instalar el curlmódulo

    sudo apt-get install php5-curl 
    pear install phpunit/PHPUnit_Selenium
    
denz
fuente
0

Estaba teniendo el mismo problema. Netbeans informaba que la versión de phpunit era demasiado antigua (que no lo era). La ejecución del script phpunit mostró directamente los mensajes anteriores.

Lo resolví agregando:

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

Para /etc/php5/cli/php.ini

¡TENGA EN CUENTA que el archivo php.ini es el de php CLI (comando), no el php.ini usado para apache!

lepe
fuente
0

Mi problema original era que no podía obtener la versión de línea de comandos de php (yum install php o yum install php-cli) para actualizar a => php5.2.7 Estaba atascado en la versión 5.1

Ya había compilado php 5.3.3 para usar con apache. Así que configuro un enlace simbólico desde / usr / bin / php (la línea de comando predeterminada) a mi versión compilada en / var / php5 / bin / php para obtener la línea de comando php reportando 5.3.3

Luego volví a seguir los pasos de instalación de pear para phpunit

Pero todavía necesitaba las cosas de cobertura de código cuando ejecuté phpunit.

Así que busqué la cobertura del código en / var / php5 / lib / php / PHP / CodeCoverage y lo agregué a la ruta de inclusión en php.ini include_path = ".: / Var / php5 / lib / php /"

Asegúrese de agregarlo a la ruta de inclusión sin / PHP porque phpunit comienza en PHP / (mayúsculas de aviso) buscando Cobertura de código Error de apertura requerida 'PHP / CodeCoverage / Filter.php'


fuente
0

Tuve este problema. Estaba desarrollando un sitio de marco zend. Finalmente, me las arreglo para resolverlo eliminando la instalación de zend y eliminando / comentando la ruta de inclusión en los archivos bath php.ini en apache y cli. Para desarrollar un sitio con zend no necesitamos tener zend instalado. Insted podemos copiar la biblioteca a la carpeta de nuestro sitio

Ruwantha
fuente
0

Para mí, me ayudó dividir las pruebas en varios lotes.

amitchhajer
fuente
0

Ubuntu 12.04:

sudo pear channel-discover pear.symfony.com
sudo pear install --alldeps phpunit/PHPUnit
RBalazs
fuente
0

Tuve el mismo problema con Windows 8 Similar a la respuesta principal, necesitaba iniciar la línea de comando, sin embargo, asegúrese de ejecutar cmd.exe como administrador . Entonces los dos comandos

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
Moak
fuente