2012-01-13 20 views
17

Intento utilizar el framework Silex como base para mi aplicación web. Sin embargo, si trato de incluir el archivo * .phar, PHP lanza el siguiente error:PHP: No se encontró la clase 'Phar'

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

Las siguientes líneas relevantes están en mi /etc/php/php.ini (como se sugiere en los documentos de Silex):

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

La biblioteca PHAR está presente en /usr/lib/php/modules/phar.so, que está configurada como ruta de extensión para todas las bibliotecas en mi php.ini

¿Alguien sabe por qué PHP está arrojando este error?

Respuesta

13

intente especificar los path to the extension:

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

Otras opciones:

base a la información que ya ha proporcionado, hay algunas posibilidades:

  • está utilizando un diferente php.ini. Compruebe la salida de phpinfo() para confirmar y asegúrese de que está editando el activo.

  • /usr/lib/php/modules/phar.so no es legible. Asegúrese de que el usuario del servidor web pueda leer este archivo.

  • Su servidor web no se ha reiniciado desde la última vez que agregó la información relacionada con phar a php.ini. Reinicia tu servidor web.

+1

Gracias, he comprobado todas sus sugerencias. Lamentablemente, el error sigue siendo el mismo. – SecStone

+0

Marqué esto como la respuesta correcta, ya que proporciona una buena lista de lo que podría ser la causa. En mi caso, el servidor web se configuró de forma que falló silenciosamente al leer el archivo php.ini. Así que no detecté un error en algunas líneas por encima de la línea 'extension = phar.so'. – SecStone

+0

Nunca escuché que PHP falle silenciosamente cuando intentó leer php.ini. ¿Puedes explicar la causa y la solución? –

0

Hm. Creo que necesitas require_once 'phar://silex/silex.phar/autoload.php'; en lugar de require_once 'silex/silex.phar';. Si este no es el caso, entonces necesitamos ver el código arrojando un error.

18

Esto funciona para mí:

php -d extension=phar.so composer.phar [... your command ...] 

Esto incluye la extensión Phar para el tiempo de ejecución actual. Funciona para servidores compartidos/VPC.

0

en mi entorno de alojamiento necesitaba especificar el número de versión de php. EG:

php-5.6 composer.phar

no

php composer.phar

0

Hope esto puede arrojar algo de luz. Estaba usando un host compartido y tuve problemas para ejecutar el compositor. Estaba usando las direcciones de este sitio http://avantidevelopment.com/install-composer-on-bluehost/ para configurar un directorio común e instalar el compositor en él. Lo seguí, pero shoud añadir por mi alias añadí el siguiente comando para .bashrc

alias composer='/ramdisk/php/54/bin/php54-cli ~/common/composer.phar' 

Que hizo el truco para mí. Espero que quien tropiece con esto encienda una bombilla.

0

Para Mageia 4, 5, Mageia Mageia 6 usuarios

 
>> urpmi php-phar;echo done 
To satisfy dependencies, the following packages are going to be installed: 
    Package      Version  Release  Arch 
(medium "Core Release2") 
    php-bz2      5.6.30  2.mga6  x86_64 
    php-phar      5.6.30  2.mga6  x86_64 
326KB of additional disk space will be used. 
151KB of packages will be retrieved. 
Proceed with the installation of the 2 packages? (Y/n) y 


    $MIRRORLIST: media/core/release/php-bz2-5.6.30-2.mga6.x86_64.rpm 
    $MIRRORLIST: media/core/release/php-phar-5.6.30-2.mga6.x86_64.rpm 
installing php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm 
Preparing...      ############################################### 
     1/2: php-bz2    ############################################### 
     2/2: php-phar    ############################################### 
>> 
Cuestiones relacionadas