문제

PHP 버전이 5.5 인 서버에서 Ubuntu + Nginx + PHP5-FPM 조합을 사용하고 있습니다.우리는 Phar 파일의 무리를 포함하는 index.php를 실행하려고합니다.같은 것 :

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

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

와 내 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
.

이 도움이 필요하지 않으며 코드를 실행할 수 없습니다.어떤 제안?

도움이 되었습니까?

해결책

다양한 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
//...
?>
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top