Recently I run into small problems related to PHP.

Problem A –

The first one was a PHP warning:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/' - /usr/lib/php5/20090626/ cannot open shared object file: No such file or directory in Unknown on line 0

PHP tried to load from /etc/php5/conf.d/sqlite.ini (php5-sqlite package).

$ dpkg -L php5-sqlite

As suspected there was file.

$ ls /usr/lib/php5/20090626/

Delete the /etc/php5/conf.d/sqlite.ini file to solve this problem.

$ sudo rm /etc/php5/conf.d/sqlite.ini

Problem B – fuser process

The second problem was more serious, thousands of fuser zombie processes and high CPU usage.

Hopefully, there is a bug report #876387, so for a solution look at the fourth comment. Don’t forget to identify and kill already running find processes.

In short, this problem can be quickly recognized by thousands of fuser zombie processes:

$ ps ax | awk '{if ($3=="Z" && $5~/fuser/) s++}; END {print s}'

It was created by php cron job /etc/cron.d/php5 (php5-common package):

$ dpkg -S /etc/cron.d/php5
php5-common: /etc/cron.d/php5

Source of this problem in /etc/cron.d/php5 file:

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

To solve it replace this line with one given below:

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

Don’t forget to kill running find processes:

# ps ax | grep "find /var/lib/php" | grep fuser | awk '{print $1}' | xargs kill