使用适用于AmazonS3的PHP SDK时出错
编辑:问题解决了(感谢)!我只需要安装curl:使用适用于AmazonS3的PHP SDK时出错,php,amazon-web-services,amazon-s3,sdk,Php,Amazon Web Services,Amazon S3,Sdk,编辑:问题解决了(感谢)!我只需要安装curl: sudo apt-get install php5-curl 我正在开发一个工具,从浏览器上传AWS S3存储桶中的图像。我使用的是亚马逊提供的。 我尝试了中提供的代码,但它不适用于我: use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // $filepath should be absolute
sudo apt-get install php5-curl
我正在开发一个工具,从浏览器上传AWS S3存储桶中的图像。我使用的是亚马逊提供的。 我尝试了中提供的代码,但它不适用于我:
use Aws\S3\S3Client;
$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
// $filepath should be absolute path to a file on disk
$filepath = '*** Your File Path ***';
// Instantiate the client.
$s3 = S3Client::factory();
// Upload a file.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $filepath,
'ContentType' => 'text/plain',
'ACL' => 'public-read',
'StorageClass' => 'REDUCED_REDUNDANCY',
'Metadata' => array(
'param1' => 'value 1',
'param2' => 'value 2'
)
));
echo $result['ObjectURL'];
即使我只保留这两行:
use Aws\S3\S3Client;
$s3 = S3Client::factory();
…我得到这些错误:
注意:使用未定义的常量CURLE\u couldn\u RESOLVE\u HOST-假定
中的“CURLE\u无法解析\u主机”
phar:///var/www/aws.phar/Aws/S3/S3Client.php 在线244
注意:使用未定义的常量CURLE\u couldn\u CONNECT-假定
“CURLE\u无法连接”在中
phar:///var/www/aws.phar/Aws/S3/S3Client.php 在线244
注意:使用未定义的常量CURLE_PARTIAL_文件-假定
中的“卷曲部分文件”phar:///var/www/aws.phar/Aws/S3/S3Client.php
在线244
注意:使用未定义的常量CURLE\u WRITE\u错误-假定
中的“卷曲写入错误”phar:///var/www/aws.phar/Aws/S3/S3Client.php 在…上
第244行
注意:使用未定义的常量CURLE\u READ\u错误-假定
中的“卷曲读取错误”phar:///var/www/aws.phar/Aws/S3/S3Client.php 在…上
第244行
注意:使用未定义的常量CURLE\u操作\u TIMEOUTED-假定
中的“CURLE_操作超时”
phar:///var/www/aws.phar/Aws/S3/S3Client.php 在线244
注意:使用未定义的常量CURLE\u SSL\u CONNECT\u错误-假定
中的“CURLE\u SSL\u CONNECT\u错误”
phar:///var/www/aws.phar/Aws/S3/S3Client.php 在线244
注意:使用未定义的常量CURLE\u HTTP\u PORT\u失败-假定
中的“CURLE\u HTTP\u端口\u失败”
phar:///var/www/aws.phar/Aws/S3/S3Client.php 在线244
注意:使用未定义的常量CURLE\u未得到任何东西-假定
“CURLE_什么都没得到”phar:///var/www/aws.phar/Aws/S3/S3Client.php 在…上
第244行
注意:使用未定义的常量CURLE\u SEND\u错误-假定
中的“卷发发送错误”phar:///var/www/aws.phar/Aws/S3/S3Client.php 在…上
第244行
注意:使用未定义的常量CURLE_RECV_ERROR-假定
中的“CURLE_RECV_ERROR”phar:///var/www/aws.phar/Aws/S3/S3Client.php 在…上
第244行
致命错误:未捕获异常
“Guzzle\Common\Exception\RuntimeException”和消息“ThePHP cURL”
必须安装分机才能使用Guzzle.in
phar:///var/www/aws.phar/Guzzle/Http/Client.php:72 堆栈跟踪:#0
phar:///var/www/aws.phar/Aws/Common/Client/AbstractClient.php(79):
Guzzle\Http\Client->_构造(“…”,
对象(Guzzle\Common\Collection))#1
phar:///var/www/aws.phar/Aws/Common/Client/ClientBuilder.php(249):
Aws\Common\Client\AbstractClient->\uu构造(对象(Aws\Common\Credentials\RefreshableInstanceProfileCredentials),
对象(Aws\S3\S3Signature),对象(Guzzle\Common\Collection))#2
phar:///var/www/aws.phar/Aws/S3/S3Client.php(207):
Aws\Common\Client\ClientBuilder->build()#3/var/www/response.php(30):
Aws\S3\S3Client::factory()#4{main}已抛出
phar:///var/www/aws.phar/Guzzle/Http/Client.php 在线72
刚刚在我的本地机器上安装了aws php sdk,没有任何aws注册, 经过多次尝试后,获得了此工作代码:
use Aws\S3\S3Client;
$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
// $filepath should be absolute path to a file on disk
$filepath = '*** Your File Path ***';
// Instantiate the client.
$s3 = S3Client::factory();
try{
// Upload a file.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $filepath,
'ContentType' => 'text/plain',
'ACL' => 'public-read',
'StorageClass' => 'REDUCED_REDUNDANCY',
'Metadata' => array(
'param1' => 'value 1',
'param2' => 'value 2'
)
));
echo $result['ObjectURL'];
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
此代码返回aws异常消息:
必须为正文或源文件参数指定非空值。
如果我将$filepath
更改为任何实际文件的路径,此代码将输出:
从实例配置文件元数据服务器检索凭据时出错。当您不是在Amazon EC2内部运行时,在创建客户端或提供实例化的AWS\Common\Credentials\CredentialsInterface对象时,必须在“key”和“secret”选项中提供AWS访问密钥ID和secret访问密钥。([curl]28:5000毫秒后连接超时[url])
所以,如果你有任何问题,我都非常欢迎,但它必须有效
顺便说一句,如果我从代码中删除catch
部分,我会在我的断页上从php收到相同的错误消息
希望这能对您的情况有所帮助。调试电汇。我正在使用nginx。我在开发过程中切换到apache,现在出现了错误。我编辑了我的信息。