Configura Error Reporting para PHP

Habilita la biblioteca

Puedes enviar informes de errores a Error Reporting desde aplicaciones PHP mediante la biblioteca de Error Reporting para PHP.

Error Reporting está integrado a algunos servicios de Google Cloud, como App Engine, Compute Engine y Google Kubernetes Engine. Error Reporting muestra los errores que registran las aplicaciones que se ejecutan en esos servicios en Cloud Logging. Para obtener más información, ve a Ejecuta en Google Cloud Platform en esta página.

También puedes enviar datos de errores a Error Reporting mediante Logging. Para obtener información sobre los requisitos de formato de datos, consulta Dale formato a los mensajes de error en Logging.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita las Error Reporting API .

    Habilita la API

  5. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  7. Habilita las Error Reporting API .

    Habilita la API

Instala la biblioteca cliente

La biblioteca de Error Reporting para PHP te permite supervisar y ver errores informados por las aplicaciones PHP que se ejecutan prácticamente en cualquier sitio.

Para obtener más información sobre la instalación, lee la documentación de la biblioteca de Error Reporting para PHP. También puedes informar problemas con el seguimiento de problemas.

Configura la biblioteca cliente

Puedes personalizar el comportamiento de la biblioteca d Error Reporting para PHP. Consulta la configuración de la biblioteca para obtener una lista de las opciones de configuración posibles.

Informa errores

1. Instala las bibliotecas de nube con el siguiente comando:

$ composer require google/cloud-error-reporting
2. Agrega la siguiente línea al php.ini, en el que WORKSPACE es la ruta de acceso absoluta al directorio raíz de tu lugar de trabajo:
auto_prepend_file='/WORKSPACE/vendor/google/cloud/ErrorReporting/src/prepend.php'

Este archivo antepuesto instala un controlador de excepciones y un controlador de errores que envía errores a Error Reporting de forma automática.

Si usas el entorno flexible de App Engine, consulta Entorno flexible de App Engine en esta página.

Ejecuta en Google Cloud

El uso de la biblioteca de Error Reporting para PHP requiere la función de escritor de Error Reporting de la administración de identidades y accesos. La mayoría de las plataformas de computación de Google Cloud proporcionan esta función de forma predeterminada.

Puedes configurar Error Reporting para PHP en los siguientes entornos de Google Cloud.

Entorno flexible de App Engine

App Engine otorga la función de escritor de Error Reporting de forma predeterminada.

La biblioteca de Error Reporting para PHP se puede usar sin necesidad de proporcionar credenciales de forma explícita.

Para habilitar Error Reporting en el entorno flexible de App Engine, sigue estos pasos:

  1. Instala las bibliotecas necesarias con el siguiente comando:

    $ composer require google/cloud-error-reporting
  2. Agrega la siguiente línea a la sección runtime_config en app.yaml:

enable_stackdriver_integration: true

Luego, la biblioteca recopila de manera automática todos los errores y las excepciones no detectadas en Error Reporting. Si utilizas un marco de trabajo web que instala sus propios controladores de excepciones, consulta la sección de integraciones de marcos de trabajo para obtener más información.

Google Kubernetes Engine

En GKE debes agregar el permiso de acceso de cloud-platform cuando creas el clúster, como se muestra en el siguiente comando de ejemplo:

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform

Compute Engine

Cuando uses las instancias de VM de Compute Engine, agrega el permiso de acceso cloud-platform a cada instancia. Si creas una instancia nueva a través de Google Cloud Console, puedes hacerlo en la sección Identidad y acceso a la API del panel Crear Instancia. Usa la cuenta de servicio predeterminada de Compute Engine o una cuenta de servicio diferente y selecciona Permitir acceso total a las API de Cloud en la sección Identidad y acceso a la API. Con cualquier cuenta de servicio que selecciones, asegúrate de que se le haya otorgado la función de escritor de Error Reporting en la sección IAM y administración de Cloud Console.

Ejecuta de forma local y en otros lugares

Para usar la biblioteca de Error Reporting para PHP fuera de Google Cloud, incluso si lo ejecutas en tu propia estación de trabajo, en las computadoras del centro de datos o en las instancias de VM de otro proveedor de servicios en la nube, debes proporcionar tu ID del proyecto de Google Cloud y las credenciales adecuadas de la cuenta de servicio directamente a la biblioteca de Error Reporting para PHP.

Puedes crear y obtener credenciales de cuentas de servicio de forma manual. Cuando especifiques el campo Función, usa la función de escritor de Error Reporting. Para obtener más información sobre las funciones de la administración de identidades y accesos, consulta la Guía de control de acceso.

Ve informes de errores

Después de la implementación, puedes ver los informes de errores en el panel de Error Reporting dentro de Cloud Console.

Ir al panel de Error Reporting

Para obtener más información, consulta Cómo visualizar errores.

Integraciones de marcos de trabajo

Algunos marcos de trabajo web anulan el controlador de excepciones. Los siguientes son ejemplos para habilitar Error Reporting con Laravel y Symfony. Para otros marcos de trabajo, puedes usar Google\Cloud\ErrorReporting\Bootstrap::exceptionHandler como el controlador de excepciones.

Laravel

Edita la función report en el archivo app/Exceptions/Handler.php de la siguiente manera:

public function report(Exception $exception)
{
    if (isset($_SERVER['GAE_SERVICE'])) {
        // Ensure Stackdriver is initialized and handle the exception
        Bootstrap::init();
        Bootstrap::exceptionHandler($exception);
    } else {
        parent::report($exception);
    }
}

También debes agregar una instrucción use de una línea al comienzo del archivo:

use Google\Cloud\ErrorReporting\Bootstrap;

Symfony

Crea un archivo nuevo src/AppBundle/EventSubscriber/ExceptionSubscriber.php con el siguiente contenido:

// src/AppBundle/EventSubscriber/ExceptionSubscriber.php
namespace AppBundle\EventSubscriber;

use Google\Cloud\ErrorReporting\Bootstrap;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;

class ExceptionSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        // return the subscribed events, their methods and priorities
        return [KernelEvents::EXCEPTION => [
            ['logException', 0]
        ]];
    }

    public function logException(ExceptionEvent $event)
    {
        $exception = $event->getThrowable();
        Bootstrap::exceptionHandler($exception);
    }
}