Question

Nous utilisons une combinaison Ubuntu + Nginx + PHP5-FPM sur nos serveurs avec la version PHP 5.5.Nous essayons d'exécuter index.php qui inclut un tas de fichiers PHAR.Quelque chose comme:

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

Lorsque ce script est exécuté à partir de la ligne de commande PHP, cela fonctionne bien.Lorsque cela est exécuté à partir d'un serveur de développement PHP (PHP -S) ou de NGinx, nous obtenons l'erreur suivante:

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

Je n'ai pas de classe appelée Extract_Phar - donc je présume que mon processus de construction l'ajoute quelque part en cours de route.J'ai utilisé Phing pour construire la même chose, juste au cas où cela aide.La cible de phing est:

<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>

et l'index.php dans mon dossier Intophar est quelque chose comme:

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

J'ai joué avec des drapeaux APC en fonction d'autres réponses et j'ai défini les éléments suivants:

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

Aucun de cela aide et nous ne pouvons pas exécuter notre code.Aucune suggestion?

Était-ce utile?

La solution

Le problème peut se produire en raison de talons contradictoires dans vos différents fichiers PHAR.Essayez:

<?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
//...
?>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top