Skip to main content

Installing PHPUnit+PEAR in Ubuntu 12.10 and Overcoming the "PHP_CodeCoverage_Filter::getInstance" Fatal Error

PHP was one of the very first languages I learnt on my way to the world of web dev/design and it still is a very strong tool in my Swiss Army Knife for any web based projects.

In recent times however with the advent of various frameworks I started to realize finally my days of painstaking coding is over and I now can finally work on my small-medium sized applications with minimal effort needed for testing.......how wrong I was.

When introduced to the world of testing I started to realize how inefficient and poor my coding standards were also how terrible they were in terms of maintenance. Also the flaws I started to find in my old projects urged me to unit-test my newer ventures. And I found the gem called PHPUnit

There are three ways of installing it in your dev box (Assuming Ubuntu)

  • Install Through PEAR
  • Install Through Composer
  • Install using standalone PHAR file
And as a loyal user of PEAR I straight went to PEAR and just typed the following command which is supposed to install PHPUnit in one go

$ sudo pear install phpunit/PHPUnit
Satisfied with the result I went to the terminal again and ran > phpunit
But to my surprise I got

PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39

Bewildered I ran to find what was causing it, but couldn't find any definite solution. So I again fired up my dev virtual box with ubuntu 12.04 and there it was running fine.

Suspecting something was wrong with my PEAR package I went ahead and  typed

$ pear config-show

It showed me (unlike the config on my 12.10)

Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels auto_discover 
Default Channel default_channel pear.php.net
HTTP Proxy Server Address http_proxy 
PEAR server [DEPRECATED] master_server pear.php.net
Default Channel Mirror preferred_mirror pear.php.net
Remote Configuration File remote_config 
PEAR executables directory bin_dir /usr/bin
PEAR documentation directory doc_dir /usr/share/php/doc
PHP extension directory ext_dir /usr/lib/php5/20090626+lfs
PEAR directory php_dir /usr/share/php
PEAR Installer cache directory cache_dir /tmp/pear/cache
PEAR configuration file cfg_dir /usr/share/php/cfg
directory
PEAR data directory data_dir /usr/share/php/data
PEAR Installer download download_dir /build/buildd/php5-5.3.10/pear-build-download
directory
PHP CLI/CGI binary php_bin /usr/bin/php
php.ini location php_ini 
--program-prefix passed to php_prefix 
PHP’s ./configure
--program-suffix passed to php_suffix 
PHP’s ./configure
PEAR Installer temp directory temp_dir /tmp/pear/temp
PEAR test directory test_dir /usr/share/php/test
PEAR www files directory www_dir /usr/share/php/htdocs
Cache TimeToLive cache_ttl 3600
Preferred Package State preferred_state stable
Unix file mask umask 2
Debug Log Level verbose 1
PEAR password (for password maintainers)
Signature Handling Program sig_bin /usr/bin/gpg
Signature Key Directory sig_keydir /etc/pear/pearkeys
Signature Key Id sig_keyid 
Package Signature Type sig_type gpg
PEAR username (for username 
maintainers)
User Configuration File Filename /home/username/.pearrc
System Configuration File Filename /etc/pear/pear.conf

Getting sniff of what was wrong I fixed my environments using the following commands

sudo pear config-set bin_dir /usr/binsudo pear config-set doc_dir /usr/share/php/docsudo pear config-set php_dir /usr/share/phpsudo pear config-set cfg_dir /usr/share/php/cfg (make (sudo mkdir cfg) directory here)sudo pear config-set data_dir /usr/share/php/data
sudi pear config-set test_dir /usr/share/php/test
And then the following

$ sudo pear uninstall phpunit/PHPUnit
$ sudo pear install phpunit/PHPUnit
And after that it ran like a charm.

Note:  This happened quite a while ago. I finally got urge to post it because on of my friends faced the exact same problem last night and she couldn't find any solution. When she was telling me today I just figured out just by hearing the error what might be wrong. And the above fixed her issue.

And it dawned to me maybe If I had posted this earlier it could have helped her :P



Comments

  1. sudo apt-get install phpunit

    That installs it and takes care of any dependencies automatically. Also sets things in the correct path.

    No need to over-complicate things.

    ReplyDelete

Post a Comment

Popular posts from this blog

Racecraft (Project Koru) · Prologue — The Origin Story

Racecraft · Prologue , The Origin Story It Started With a Wine List and a Question About Racing How a happy-hour conversation in the Bay Area turned into a trustable AI race coach , and then into a second version that runs entirely on a phone, on the NPU. This is the prologue to a five-part series. Two years ago(1st November, 2024) I was in the Bay Area for a GDE Summit. If you've never been: it's a couple of days of talks among Google Developer Experts, the kind of people who get unreasonably excited about a new on-device runtime, and then , mercifully , a happy hour where everyone stops performing and just eats. We ended up at a restaurant(Puesto Santa Clara), a long table of GDEs, and I was doing the most important engineering of the evening: trying to decide which wine to order. Across the table was Ajeet Mirwani . I don't even remember how the wine talk turned into racing talk , these things drift , but the moment the word "racing" ...

The Throughput Trap: Benchmarking vLLM on OpenXLA and the Reality of Production LLM Serving

vLLM Systems · DevLab 2026, Deep Dive I was recently invited by the Google TPU team to speak at the OpenXLA Summer DevLab 2026 . This post breaks down our deep-dive evaluation of the matured vLLM + OpenXLA stack, the fundamental engineering mismatches between CUDA and XLA serving paths, and why traditional capacity metrics are lying to you. If you are operating large language models at enterprise scale right now, your platform architecture team is likely staring at a massive infrastructure crossroads: Should we migrate our core serving workloads from GPUs to TPUs? Historically, NVIDIA's CUDA ecosystem was the only serious option for user-facing, low-latency LLM generation. But here in 2026, the economics and infrastructure options have transformed. Google TPUs are highly available, cheaper per chip, and the open-source serving stack built around vLLM and OpenXLA has officially achieved absolute production readiness. Yet, when our infrast...

A Split‑Brain Neuro‑Symbolic Training Method for High‑Velocity Autonomous Coaching from Telemetry

 Author: Rabimba Karanjai Scope: Problem statement + data methodology + model training (no deployment discussion) Abstract Real‑time coaching in motorsport is a safety‑critical learning problem : a system must map noisy, high‑frequency telemetry to short, actionable guidance that remains physically consistent and avoids hazardous recommendations . This paper proposes a “Split‑Brain” training formulation that separates (i) a semantic coaching target (what action/critique should be expressed) from (ii) a reflexive interface (how actions are represented as compact, verifiable tokens). The approach trains a Small Language Model (SLM) in the Gemma family [1] using QLoRA fine‑tuning [2] , and introduces a telemetry tokenizer plus teacher‑student synthesis pipeline to generate instruction‑action pairs at scale. Core contribution: a reproducible method to convert “ golden lap ” differential tel...