Pregunta

Estamos utilizando una combinación Ubuntu + Nginx + PHP5-FPM en nuestros servidores con la versión PHP 5.5.Estamos tratando de ejecutar index.php, que incluye un grupo de archivos PHAR.Algo así como:

<?php
include "a.phar";
include "b.phar";
//...
?>

Cuando este script se ejecuta desde la línea de comandos PHP, funciona bien.Cuando se ejecuta desde el servidor de desarrollo PHP (PHP -S) o desde Nginx, obtenemos el siguiente error:

2013/11/18 17:56:06 [error] 14384#0: *597 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Cannot redeclare class Extract_Phar in b.phar on line 103

No tengo una clase llamada extract_phar: así que supongo que mi proceso de compilación lo está agregando en algún lugar del camino.He usado Phing para construir lo mismo, en caso de que ayude.El objetivo de PHING es:

<target name="phar" depends="prepare">
  <pharpackage destfile="./build/phar/LogUtils.phar" 
  basedir="./build/intophar"
  compression="bzip2">
  <fileset dir="./build/intophar/">
    <include name="*.*" />
    <include name="**/**" />
  </fileset>
  <metadata>
    <element name="version" value="1.0" />
    <element name="authors">
       <element name="Shreeni">
         <element name="e-mail" value="test@test.com" />
       </element>
    </element>
  </metadata>
  </pharpackage>
</target>

y el index.php en mi carpeta intho es algo así como:

include("api/LogUtils.inc.php");
// Other relative include statements

He jugado con banderas de APC según otras respuestas y he establecido lo siguiente:

apc.include_once_override = 0 
apc.canonicalize = 0 
apc.stat = 0
apc.enabled=0 
apc.enabled_cli=0
apc.cache_by_default = 0

Ninguno de esto ayuda y no podemos ejecutar nuestro código.¿Alguna sugerencia?

¿Fue útil?

Solución

El problema podría estar sucediendo debido a los talones conflictivos en sus diversos archivos PHAR.Prueba:

<?php
include "phar://a.phar/index.php"; // Assuming that the stub is index.php
include "phar://b.phar/index.php"; // Assuming that the stub is index.php
//...
?>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top