使用AWS PHP Streamwrapper,文件功能无法正常工作

时间:2018-05-15 14:17:58

标签: php amazon-s3 amazon-ec2 aws-php-sdk

我在两个不同的环境中运行这个PHP代码:运行PHP 5.6的本地服务器和运行PHP 7.2的EC2实例。

$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。使用var_dump,S3客户端和流包装器似乎都是正确的。我唯一能找到的是PHP文件函数根本无法正常工作。

我也在EC2实例中试过这一行:

 filesize($filepath);

并发出此警告:filesize():stat失败,因为s3://...LlPIpMvDdmX6i38.pdf

我在EC2设置中遗漏了哪些内容阻止Streamwrapper工作?

1 个答案:

答案 0 :(得分:0)

我终于在同事的帮助下在错误日志中发现了错误。

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

设置allow_url_fopen = 1解决了问题。