Ошибка PHP5-FPM при включении нескольких файлов PHAR

StackOverflow https://stackoverflow.com//questions/20045026

  •  26-12-2019
  •  | 
  •  

Вопрос

Мы используем комбинацию 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
//...
?>
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top