Ошибка PHP5-FPM при включении нескольких файлов PHAR
Вопрос
Мы используем комбинацию Ubuntu + Nginx + PHP5-FPM на наших серверах с PHP-версией 5,5.Мы пытаемся запустить index.php, который включает в себя кучу фарских файлов.Что-то вроде:
<?php
include "a.phar";
include "b.phar";
//...
?>
.
Когда этот скрипт запускается из командной строки PHP, она работает нормально.Когда это запускается с сервера PHP Development (PHP -S) или от Nginx, мы получаем следующую ошибку:
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
.
У меня нет класса под названием Extract_phar - поэтому я предполагаю, что мой процесс сборки добавляет его где-то по пути.Я использовал 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>
.
и index.php в моей интофарной папке - это что-то вроде:
include("api/LogUtils.inc.php");
// Other relative include statements
.
Я играл с флагами APC на основе других ответов и установила следующее:
apc.include_once_override = 0
apc.canonicalize = 0
apc.stat = 0
apc.enabled=0
apc.enabled_cli=0
apc.cache_by_default = 0
.
Ничто из этого не помогает, и мы не можем запустить наш код.Какие-либо предложения?
Решение
Проблема может происходить из-за противоречивых заглушек в ваших различных фарах фары.Попробуйте:
<?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
//...
?>
.