0

現在Guzzleを使用しているプロジェクトがあります(ブートストラップファイルの明示的な「require_once」によって[.pharとして]ロードされます)。

Amazon S3へのアップロードを簡単に処理できるように、AmazonからAWSSDKforPHPを追加しようとしています。残念ながら、パッケージ(.pharファイルとしてもパッケージ化されている)をインクルードしようとすると、PHPは厄介なエラーをスローします。

 PHP Fatal error:  Cannot redeclare class Symfony\\Component\\ClassLoader\\UniversalClassLoader in phar:///usr/share/php/AWSSDKforPHP/aws.phar/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php on line 62

APCが以前にいくつかのrequire/include頭痛を引き起こすのを見たので、私はすでにAPCを(完全に)オフにしました。

PHPには、依存関係のあるパッケージを1回しか含めることができないという厄介な制限があるのではないかと思います。...しかし、私は間違っている可能性があります。

4

1 に答える 1

1

これらのライブラリの両方の phar スタブを見ると、UniversalClassLoader の require_once で競合している理由がわかりません。幸いなことに、AWS SDK for PHP 2 によって提供される phar には Guzzle ライブラリも含まれているため、アプリケーションに aws.phar を含めるだけで済みます。

于 2012-11-15T04:23:59.227 に答える