包含多个phar文件时出现Php5-FPM错误

我们在我们的服务器上使用Ubuntu + nginx + php5-fpm组合,PHP版本是5.5。 我们正在尝试运行index.php,其中包含一堆phar文件。 就像是:

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

当这个脚本从命令行PHP运行时,它工作正常。 当这是从PHP开发服务器(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的类 – 所以我认为我的构build过程是在某个地方添加的。 我已经使用phing来build立相同的,以防万一。 目标是:

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

我的intophar文件夹中的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 

这些都没有帮助,我们无法运行我们的代码。 有什么build议么?

由于您的各种phar文件中存在冲突的存根,可能会发生此问题。 尝试:

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