Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用适用于AmazonS3的PHP SDK时出错_Php_Amazon Web Services_Amazon S3_Sdk - Fatal编程技术网

使用适用于AmazonS3的PHP SDK时出错

使用适用于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

编辑:问题解决了(感谢)!我只需要安装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 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,现在出现了错误。我编辑了我的信息。