PHP: Class 'Phar' not found

SecStone picture SecStone · Jan 13, 2012 · Viewed 57.7k times · Source

I try to use the Silex framework as base for my web application. However, if I try to include the *.phar archive, PHP throws the following error:

Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11

The following relevant lines are in my /etc/php/php.ini (as suggested in the docs of Silex):

extension=phar.so
phar.readonly = Off
phar.require_hash = Off
detect_unicode = Off

The PHAR library is present in /usr/lib/php/modules/phar.so which is set as the extension path for all libraries in my php.ini

Does anyone know why PHP is throwing this error?

Answer

George Cummins picture George Cummins · Jan 13, 2012

Try specifying the path to the extension:

php -d extension=phar.so composer.phar <your_script>

Other options:

Based on the information you provided, there are a few possibilities:

  • You are using a different php.ini. Check the output of phpinfo() to confirm, and ensure that you are editing the active one.

  • /usr/lib/php/modules/phar.so is not readable. Ensure that the web server user can read this file.

  • Your web server has not been restarted since you last added the phar-related information to php.ini. Restart your webserver.