“Call to undefined function php_timer_autoload()” in PHPUnit 3.6.12

Beim Einsatz von PHPUnit 3.6.12 kann es zu folgender Fehlermeldung kommen:

Fatal error: Call to undefined function php_timer_autoload() in /Applications/XAMPP/xamppfiles/lib/php/pear/PHPUnit/Util/GlobalState.php on line 381
Fatal Error Error: Call to undefined function php_timer_autoload() in [/Applications/XAMPP/xamppfiles/lib/php/pear/PHPUnit/Util/GlobalState.php, line 381

Ursache

Das Package PHP_Timer ist in Version 1.0.4 nicht mit PHPUnit 3.6.12 kompatibel, da die Funktion php_timer_autoload dort entfernt wurde.

Merkwürdigerweise hat PHPUnit bei der Installation via pear install phpunit/PHPUnit selber diese Version von PHP_Timer installiert.

Kontrollieren kann man die Versionen mit:

$:[~]:$ pear list -c phpunit
Installed packages, channel pear.phpunit.de:
============================================
Package            Version State
File_Iterator      1.3.2   stable
PHPUnit            3.6.12  stable
PHPUnit_MockObject 1.1.1   stable
PHP_CodeCoverage   1.1.4   stable
PHP_Invoker        1.1.2   stable
PHP_Timer          1.0.4   stable
PHP_TokenStream    1.1.4   stable
Text_Template      1.1.2   stable

Lösung

Ein Downgrade auf PHP_Timer 1.0.3 schafft hier Abhilfe.

Die einfachste Variante ist es, das Package in entsprechender Version schon vor der Installation von PHPUnit zu installieren.
Dadurch wird bei der PHPUnit Installation nicht fälschlich die Version 1.0.4 von PHP_Timer
als Abhängigkeit mitinstalliert, da bereits ein passendes Package erkannt wird.

$:[~]:$ pear install phpunit/PHP_Timer-1.0.3
downloading PHP_Timer-1.0.3.tgz ...
Starting to download PHP_Timer-1.0.3.tgz (3,743 bytes)
....done: 3,743 bytes
install ok: channel://pear.phpunit.de/PHP_Timer-1.0.3

Ist PHPUnit schon installiert, so muss das aktuelle Package (Version 1.0.4) entfernt und das ältere Package (Version 1.0.3) installiert werden.

$:[~]:$ pear uninstall -n phpunit/PHP_Timer
phpunit/PHP_Timer (version >= 1.0.1) is required by installed package "phpunit/PHP_Invoker"
phpunit/PHP_Timer (version >= 1.0.1, version <= 1.0.3) is required by installed package "phpunit/PHPUnit"
uninstall ok: channel://pear.phpunit.de/PHP_Timer-1.0.4
$:[~]:$ pear install phpunit/PHP_Timer-1.0.3
downloading PHP_Timer-1.0.3.tgz ...
Starting to download PHP_Timer-1.0.3.tgz (3,743 bytes)
....done: 3,743 bytes
install ok: channel://pear.phpunit.de/PHP_Timer-1.0.3

Nach diesem Prozedere sollte die Fehlermeldung verschwunden sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert