Почему aws.phar запускается один раз, а потом не загружается снова?
Я устанавливаю AWS SDK для php в моем приложении эластичного beanstalk, используя файл phar:
require_once __DIR__ . '/../AWS-SDK/aws.phar';
когда я запускаю скрипт в первый раз, это удается! но когда я пытаюсь снова, я получаю эту ошибку:
Warning: require(phar://aws.phar/aws-autoloader.php): failed to open stream: phar error: invalid url or non-existent phar "phar://aws.phar/aws-autoloader.php" in /var/app/current/src/utils/AWS-SDK/aws.phar on line 3 Fatal error: require(): Failed opening required 'phar://aws.phar/aws-autoloader.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/app/current/src/utils/AWS-SDK/aws.phar on line 3
Как решить проблему?
5 ответов
Не использовать require_once
, Это вызывает эту проблему. Вы должны использовать require
или же include
Попробуйте отключить opcache
- добавьте следующее в /etc/php5/apache2/php.ini
opcache.enable=0
- перезапустить Apache
service apache2 restart
Это известная проблема, по крайней мере, в старых версиях aws.phar, и, похоже, существует общая проблема с phars и opc (ранее Zend Optimizer+)
Кажется, в некоторых версиях файла aws.phar произошла ошибка, которая вызывает такое поведение и предупреждающее сообщение.
Предупреждение: require(phar://aws.phar/aws-autoloader.php): не удалось открыть поток: ошибка phar: неверный URL или несуществующий phar "phar://aws.phar/aws-autoloader.php" в /var/app/current/src/utils/AWS-SDK/aws.phar в строке 3 Неустранимая ошибка: require(): сбой открытия требуется 'phar://aws.phar/aws-autoloader.php' (include_path='.:/ USR / доли / груша: / USR / доли / PHP ')
Я экспериментировал с той же проблемой, используя aws.phar с версией 2.7.17 AWS SDK для PHP
Решение, которое мне помогло, состояло в том, чтобы загрузить и извлечь версию AWS SDK для PHP на aws.zip и вместо этого потребовать файл aws-autoloader.php, как описано в документации по установке.
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/installation.html
Некоторые люди сообщают об успехе при использовании версии AWS 2.4.10 (aws.phar), но это слишком устарело для моих целей.
Чтобы решить проблему, я установил SDK, используя композитор! Кстати, это рекомендуемая техника!
Убедитесь, что вы объявляете все использование пространства имен в верхней части файла, прежде чем выполнять команду "require". Если вы сначала включите файлы, это может испортить пространство имен. Это исправило проблему для меня.