Today I have upgraded my Debian OS 6.0 (configured with apt-pinning).
Among the updates when called the dist-upgrade rolled a number of modules installed for php5. PHP was updated as well, actually up to version 5.4.0-2. But … then began weird problem – any local site did not work! In the logs were strange errors for, say, a website based on the framework, YII there was a message:
[Sun Mar 25 13:32:51 2012] [error] [client 127.0.0.1] PHP Fatal error: Call to undefined function (null) () in / home / web / ccc / frontend / index.php on line 4
And on that line 4 was nothing special, except call to dirname (__FILE__)!
Google-searching on the Internet for the similar error I did not find anything. Posted a bug on php.net.
But it’s something nasty! Nothing at all works…
I began to dig further. I tried to run php scripts from the console, in order to check – was really dirname () removed? 🙂 And found a number of outstanding notifications warnings:
rodush @ rdushko :/ var / www $ php test.php
Failed loading / usr/lib/php5/20090626 + lfs / xdebug.so: / usr/lib/php5/20090626 + lfs / xdebug.so: cannot open shared object file: No such file or directory
PHP Warning: PHP Startup: Unable to load dynamic library ‘/ usr/lib/php5/20100525 + lfs / suhosin.so’ – / usr/lib/php5/20100525 + lfs / suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/ usr/lib/php5/20100525 + lfs / xhprof.so’ – / usr/lib/php5/20100525 + lfs / xhprof.so: cannot open shared object file: No such file or directory in Unknown on line 0
Although the directive dirname() in the test file worked fine, and included a file that I requested.
Having looked in the directory specified in the message, I discovered that those libraries are indeed absent!
So far decided not fooling: once the libraries will be available – I will get them updated, so I decided to remove the configs for php for that libraries.
Theese config ini files are located in the directory / etc/php5/conf.d /
just renamed all the config files, which have not come during update, to files with the suffix “old” (handy for the future 🙂 I think)
suhosin.ini.old xdebug.ini.old xcache.ini.old xhprof.ini.old
I tried to call test script from the console – no more warnings php! I tried to go to the sites in a browser, and – lo and behold! – It works!
Thats what the magic may happen in case if php complains that it is impossible to add extra modules library.
So, now you may know where to start if you faced similar strange issues.