Erro Php5-FPM ao incluir vários arquivos phar
Pergunta
Estamos usando uma combinação Ubuntu+nginx+php5-fpm em nossos servidores com a versão PHP 5.5.Estamos tentando executar index.php que inclui vários arquivos phar.Algo como:
<?php
include "a.phar";
include "b.phar";
//...
?>
Quando este script é executado a partir da linha de comando PHP, ele funciona bem.Quando isso é executado no servidor de desenvolvimento php (php -S) ou no nginx, obtemos o seguinte erro:
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
Não tenho uma classe chamada Extract_Phar - então presumo que meu processo de construção a esteja adicionando em algum lugar ao longo do caminho.Eu usei o phing para construir o mesmo, caso isso ajude.O alvo do phing é:
<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>
E o index.php na minha pasta intophar é algo como:
include("api/LogUtils.inc.php");
// Other relative include statements
Eu brinquei com sinalizadores apc com base em outras respostas e defini o seguinte:
apc.include_once_override = 0
apc.canonicalize = 0
apc.stat = 0
apc.enabled=0
apc.enabled_cli=0
apc.cache_by_default = 0
Nada disso ajuda e não conseguimos executar nosso código.Alguma sugestão?
Solução
O problema pode estar acontecendo devido a stubs conflitantes em seus vários arquivos phar.Tentar:
<?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
//...
?>