Dado que la versión 5.5 de PHP ya no es compatible con la comunidad, recomendamos que las apps nuevas usen el entorno de ejecución de PHP 7.

Lee y escribe archivos

En el entorno estándar de PHP 5 en Google App Engine, no puedes escribir en el sistema de archivos local en el que se implementa tu aplicación. Este comportamiento garantiza la seguridad y la escalabilidad de tu aplicación.

Sin embargo, si tu aplicación necesita escribir y leer archivos en tiempo de ejecución, el entorno estándar de PHP 5 proporciona un wrapper integrado de transmisión de Google Cloud Storage que te permite usar muchas de las funciones estándar del sistema de archivos PHP para leer y escribir archivos.

Estas son las dos formas posibles de escribir archivos en Google Cloud Storage:

  • Escribir archivos desde tu aplicación
    • Escritura de archivos simple
    • Escritura de archivos transmitida
  • Permitir al usuario subir archivos a Google Cloud Storage

Escribe archivos desde tu app

Si escribes archivos desde tu aplicación, puedes escribir el archivo completo de una sola vez o puedes transmitir la escritura del archivo.

El wrapper de transmisión de App Engine para Cloud Storage está integrado en el entorno de ejecución y se usa cuando proporcionas un nombre de archivo que comienza con gs://. El wrapper requiere que el nombre del depósito o del objeto de archivo tenga la siguiente forma:

gs://bucket_name/desired_object_name

Escritura de archivos simple

Para escribir datos en Google Cloud Storage desde tu app, debes usar file_put_contents, con una URL de almacenamiento en la nube válida. Por ejemplo:

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

donde my_bucket es un depósito de Google Cloud Storage configurado correctamente.

También, si deseas usar opciones de transmisión para suministrar permisos, almacenamiento en caché o las opciones de metadatos, puedes escribir el archivo de la siguiente manera:

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

Escritura de archivos transmitida

También puedes usar fopen/fwrite para escribir datos de forma continua:

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

Ten en cuenta que cuando usas transmisión, los datos pasan a Google Cloud Storage en fragmentos más pequeños. No necesitas saber la longitud total de los datos que se escribirán, ya que eso se calculará cuando el recurso del archivo esté cerrado.

Estas son las formas básicas de escribir archivos. Para casos prácticos especiales y administración de archivos más avanzada, consulta la lista de temas en Dónde continuar.

Borra archivos

Si quieres borrar el archivo en sí, usa la función unlink() de PHP.

Cargas de usuario

Para obtener detalles sobre esta opción de escritura de archivos, consulta Cómo permitir a los usuarios subir archivos

Lee archivos

Para obtener información sobre cómo leer archivos desde Google Cloud Storage, consulta Cómo proporcionar acceso público a los archivos

Configuración y requisitos

Tienes que activar Google Cloud Storage y crear un depósito. Consulta Configuración para obtener más detalles.

Funciones de sistema de archivos de PHP 5 compatibles

Se admiten muchas de las funciones de archivos de PHP 5 en general usadas, junto con la información del archivo y las funciones del directorio. Para obtener una lista completa de las funciones de PHP admitidas, consulta la sección sobre compatibilidad de funciones del sistema de archivos de PHP 5.

Funciones extendidas que proporciona la API de herramientas de Cloud Storage

El wrapper de transmisión de Google Cloud Storage te permite usar llamadas del sistema de archivos PHP. Sin embargo, hay características extendidas disponibles que tal vez necesites para un uso óptimo de Google Cloud Storage. Estas características extendidas las proporciona la API de herramientas de Cloud Storage:

Esta API brinda un conjunto de funciones que admiten la entrega de archivos y de imágenes, junto con otras utilidades de valor. Cubriremos varias de ellas en las otras páginas de temas.

¿Existe alguna otra forma de leer y escribir archivos?

Una aplicación de PHP 5 en App Engine debe usar el wrapper de transmisión de Cloud Storage para escribir archivos en el entorno de ejecución. Sin embargo, si una aplicación necesita leer archivos y estos son estáticos, puedes leer archivos estáticos subidos con tu aplicación mediante funciones de sistema de archivos de PHP como file_get_contents.

Por ejemplo:

$fileContents = file_get_contents($filePath);

Aquí, la ruta de acceso especificada debe ser una ruta relativa a la secuencia de comandos que accede a ellos.

Debes subir el archivo o los archivos en un subdirectorio de la aplicación cuando implementes tu aplicación en App Engine y debes configurar el archivo app.yaml para que tu aplicación pueda acceder a esos archivos. Para obtener detalles completos, consulta Configuración de aplicaciones de PHP 5 con app.yaml.

En la configuración de app.yaml, ten en cuenta que si usas un archivo estático o un controlador de directorio (static_files o static_dir) debes especificar application_readable como verdadero o tu app no podrá leer los archivos. Sin embargo, si un controlador script entrega los archivos, esto no es necesario, ya que estos son legibles por los controladores de secuencias de comandos de forma predeterminada.

Pasos siguientes

Lee los siguientes temas para obtener más detalles sobre cómo usar la API de herramientas de Cloud Storage: