본문 바로가기
개발/Back-end

[PHP] AWS S3 파일 업로드 예제

by stephen26 2023. 11. 25.

https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html

 

Install the AWS SDK for PHP Version 3 - AWS SDK for PHP

Using PHP with the Suhosin patch is not recommended, but is common on Ubuntu and Debian distributions. In this case, you might need to enable the use of phars in the suhosin.ini. If you don’t do this, including a phar file in your code will cause a silen

docs.aws.amazon.com

 

위 경로에서 AWS SDK .zip 파일을 다운받고 WEBROOT(ex. var/www/html) 경로에 압축 풀어주기

 

 

AWS > IAM > 보안 자격 증명 > 액세스 키 만들기 경로로 들어와 엑세스 키를 만들어 key와 secret 값을 확보한다

 

 

그리고 Bucket > 권한 > 객체 소유권 편집을 통해 ACL을 활성화 한다.

 

<?php
include_once('aws-autoloader.php'); // SDK 압축파일 풀어준 path 설정

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
use Aws\Credentials\CredentialProvider;

$s3Client = S3Client::factory(
    array(
        'region' => 'ap-northeast-2(본인의 region)', // 본인의 region
        'version' => 'latest',
        'signature' => 'v4',
        'credentials' => [
            'key' => 'sfsdafkhjshfsdfsjkfhsak', // AWS 콘솔에서 생성한 key
            'secret' => 'sadfsdfoihsafiohefleajflkejeff+/fdsfjlkf' // AWS 콘솔에서 생성한 secret
        ]

    )
);

$file_handler = fopen('./img/bacgkround.png', 'r'); // 업로드 대상 파일 경로
$s3_path = 'test/bacgkround.png'; // s3에 저장할 경로

$s3Client->putObject(
    array(
        'Bucket' => 'helloworld', // 본인 bucket 이름
        'Key' => $s3_path,
        'Body' => $file_handler,
        'ACL' => 'public-read' // public으로 ACL을 열었을 경우
    )
);
?>

 

위 처럼 upload test 파일 생성해서 test 해보면 정상 업로드가 될 것 이다

댓글