У меня есть этот 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?