Включение PHAR, который упаковывает существующий класс

У меня есть проект, который в настоящее время использует Guzzle (который загружается [как .phar] с помощью явное «require_once» в файле начальной загрузки).

Я пытался добавить AWSSDKforPHP от Amazon, чтобы я мог легко обрабатывать загрузки в Amazon S3. К сожалению, когда я пытаюсь включить пакет (также упакованный в виде файла .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, так как я видел, что APC раньше вызывал головную боль с требованием/включением.

Я сомневаюсь, что в PHP было бы такое неудобное ограничение, позволяющее включать пакет с зависимостью только один раз. ... Но я могу ошибаться.


person Rican7    schedule 09.11.2012    source источник


Ответы (1)


Глядя на заглушки phar обеих этих библиотек, я не уверен, почему они конфликтуют с require_once UniversalClassLoader. Хорошей новостью является то, что phar, предоставляемый AWS SDK для PHP 2, также включает библиотеку Guzzle, поэтому вам нужно только включить aws.phar в свое приложение.

person Michael Dowling    schedule 15.11.2012
comment
Хм. Я все равно использовал другой класс для службы S3, но это определенно было бы приятно получить ответ на этот вопрос. :/ - person Rican7; 15.11.2012