파일 읽기 및 쓰기

Google App Engine PHP 5 표준 환경에서 애플리케이션이 배포될 로컬 파일 시스템은 쓰기가 지원되지 않습니다. 이 동작은 애플리케이션의 보안 및 확장성을 보장합니다.

하지만 애플리케이션이 런타임에 파일 쓰기 및 읽기를 수행해야 할 경우 PHP 5 표준 환경은 파일 읽기 및 쓰기를 위해 여러 표준 PHP 파일 시스템 함수를 사용할 수 있게 해주는 내장 Google Cloud Storage 스트림 래퍼를 제공합니다.

Google Cloud Storage에 파일을 쓰는 방법은 두 가지가 있습니다.

  • 앱에서 파일 쓰기
    • 간단한 파일 쓰기
    • 스트리밍된 파일 쓰기
  • 사용자가 Google Cloud Storage에 파일 업로드하도록 허용

앱에서 파일 쓰기

앱에서 파일을 쓰는 경우 전체 파일을 한 번에 쓰거나 파일 쓰기를 스트리밍할 수 있습니다.

Cloud Storage용 App Engine 스트림 래퍼는 런타임에 내장되며 이름이 gs://로 시작되는 파일 이름이 제공되면 사용됩니다. 래퍼에 필요한 버킷 또는 파일 객체의 이름 형식은 다음과 같습니다.

gs://bucket_name/desired_object_name

간단한 파일 쓰기

앱에서 Google Cloud Storage에 데이터를 쓰려면 유효한 클라우드 스토리지 URL을 사용하여 file_put_contents를 사용합니다. 예를 들면 다음과 같습니다.

file_put_contents("gs://${my_bucket}/hello.txt", $newFileContent);

여기서 my_bucket제대로 구성된 Google Cloud Storage 버킷입니다.

또는 스트리밍 옵션을 사용하여 권한, 캐싱 또는 메타데이터 옵션을 제공하려는 경우 다음과 같이 파일을 쓸 수 있습니다.

$options = ['gs' => ['Content-Type' => 'text/plain']];
$context = stream_context_create($options);
file_put_contents("gs://${my_bucket}/hello_options.txt", $newFileContent, 0, $context);

스트리밍된 파일 쓰기

또는 fopen/fwrite를 사용하여 스트리밍 방식으로 데이터를 쓸 수 있습니다.

$fp = fopen("gs://${my_bucket}/hello_stream.txt", 'w');
fwrite($fp, $newFileContent);
fclose($fp);

스트리밍을 사용하는 경우 데이터가 더 작은 청크로 Google Cloud Storage로 플러시됩니다. 작성될 데이터의 전체 길이에 대한 정보는 없어도 됩니다. 이 길이는 파일 리소스가 닫힐 때 계산됩니다.

이상은 파일을 쓰는 기본적인 방법입니다. 특별 사용 사례 및 고급 파일 관리의 경우 다음에 수행할 작업 아래에 나와 있는 항목을 참조하세요.

파일 삭제

파일 자체를 삭제하려는 경우 PHP unlink() 함수를 사용합니다.

사용자 업로드

이 파일 쓰기 옵션에 대한 자세한 내용은 사용자가 파일을 업로드하도록 허용을 참조하세요.

파일 읽기

Google Cloud Storage에서 파일 읽기에 대한 자세한 내용은 파일에 대한 공개 액세스 권한 제공을 참조하세요.

설정 및 요구사항

Google Cloud Storage를 활성화하고 버킷을 만들어야 합니다. 자세한 내용은 설정을 참조하세요.

지원되는 PHP 5 파일 시스템 함수

일반적으로 사용되는 많은 PHP 5 파일 함수는 파일 정보 및 디렉터리 함수와 함께 지원됩니다. 지원되는 전체 PHP 함수 목록은 PHP 5 파일 시스템 함수 지원을 참조하세요.

Cloud Storage Tools API에서 제공하는 확장 기능

Google Cloud Storage 스트림 래퍼를 사용하면 PHP 파일 시스템 호출을 사용할 수 있습니다. 하지만 Google Cloud Storage를 최적으로 사용하기 위해 필요할 수 있는 확장 기능이 있습니다. 이러한 확장 기능은 Cloud Storage Tools API에서 제공합니다.

이 API는 기타 유용한 유틸리티와 함께 파일 및 이미지 제공을 지원하는 일련의 기능을 제공합니다. 이러한 기능은 나머지 항목 페이지에서 다룹니다.

파일을 읽고 쓰는 다른 방법이 있나요?

App Engine PHP 5 앱은 런타임 시 파일을 쓰려면 Cloud Storage 스트림 래퍼를 사용해야 합니다. 하지만 앱에서 파일을 읽어야 하는데 이러한 파일이 정적인 경우에는 file_get_contents와 같은 PHP 파일 시스템 함수를 사용하여 앱을 통해 업로드된 정적 파일을 선택적으로 읽을 수도 있습니다.

예를 들면 다음과 같습니다.

$fileContents = file_get_contents($filePath);

여기서 지정된 경로는 해당 경로에 액세스하는 스크립트에 상대적인 경로여야 합니다.

앱을 App Engine에 배포할 때는 애플리케이션 하위 디렉터리에 파일을 업로드해야 하며, 앱에서 해당 파일에 액세스할 수 있도록 app.yaml 파일을 구성해야 합니다. 자세한 내용은 app.yaml로 PHP 5 애플리케이션 구성을 참조하세요.

app.yaml 구성에서 정적 파일 또는 디렉터리 핸들러(static_files 또는 static_dir)를 사용하려면 application_readable을 true로 설정해야 합니다. 그렇지 않으면 앱에서 파일을 읽을 수 없습니다. 하지만 script 핸들러가 이 파일을 제공하는 경우 기본적으로 스크립트 핸들러가 이러한 파일을 읽을 수 있으므로 이 작업을 수행할 필요가 없습니다.

다음에 수행할 작업

Cloud Storage Tools API 사용에 대한 세부정보를 보려면 다음 항목을 읽어보세요.