質問

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
.

extract_pharと呼ばれるクラスはありません。私はちょうど役立つ場合には、私はPhingを使って同じものを構築しました。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の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