Файловые функции не работают должным образом с AWS PHP Streamwrapper - PullRequest
0 голосов
/ 15 мая 2018

У меня есть этот PHP-код, работающий в двух разных средах: локальный сервер с PHP 5.6 и экземпляр EC2 с PHP 7.2.

$filepath = 's3://'.$this->s3Bucket.'/'.$key;

$this->s3Client->registerStreamWrapper();

echo "file exists ".file_exists($filepath);

Файловые функции (например, file_exists и readfile) не работают.не работают одинаково в обеих средах.На локальном сервере они работают должным образом: то есть file_exists возвращает true для известного файла, как и ожидалось.Но в экземпляре EC2 file_exists возвращает false.

$ filepath var выглядит как s3://my-bucket/a-prefix/another-prefix/LlPIpMvDdmX6i38.pdf.Клиент S3 и потоковая оболочка выглядят корректно с помощью var_dump.Единственное, что я могу найти, - это то, что файловые функции PHP просто не работают должным образом.

Я также попробовал эту строку в экземпляре EC2:

 filesize($filepath);

И пошёл это предупреждение: filesize (): stat не удалось для s3: //...LlPIpMvDdmX6i38.pdf

Что-то мне не хватает в настройке EC2, которая мешает работе Streamwrapper?

1 Ответ

0 голосов
/ 17 мая 2018

Я наконец нашел ошибку в журналах ошибок с помощью коллеги.

PHP Warning:  readfile(): s3:// wrapper is disabled in the server configuration by allow_url_fopen=0

Установка allow_url_fopen = 1 исправила проблему.

...