Base de conocimientos

1 000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!

Instalar una alternativa PHP pura

Esta guía explica cómo utilizar GnuPG / PGP con PHP en un Servidor Cloud de Infomaniak, tras la obsolescencia de la extensión nativa (se priorizan alternativas "PHP puro" o wrappers modernos).

 

Prólogo

  • La extensión del sistema PHP_GnuPG ya no es mantenida por la comunidad PHP y, por lo tanto, ya no está disponible en los entornos recientes.
  • Dos alternativas principales en "Pure PHP" (instalables a través de Composer) permiten seguir firmando o cifrando sus datos de manera segura.
  • En caso de necesidad, socios locales y referenciados por Infomaniak pueden encargarse de estos trámites: lance una solicitud de oferta gratuita; ellos se encargan de todo, liberándolo de los detalles técnicos — también descubra el rol del proveedor de alojamiento.

 

Opción 1: Crypt_GPG (Recomendado)

Esta biblioteca actúa como un wrapper: se comunica directamente con el binario gpg instalado en su Servidor Cloud. Es la solución más eficiente y estable.

Para instalarlo, conéctese a través de SSH y ejecute este comando en la raíz de su proyecto:

# Install the PEAR Crypt_GPG package via Composer
composer require pear/crypt_gpg

Ejemplo de uso para cifrar un mensaje (enfoque orientado a objetos):

<?php
require_once 'vendor/autoload.php';

try {
    // Initialize the GPG object
    $gpg = new Crypt_GPG();

    // Set the recipient email (must match a public key already imported on the server)
    $gpg->addEncryptKey('contact@example.com');

    $message = "This is a secret message.";
    
    // Encrypt the data
    $enveloppe = $gpg->encrypt($message);
    
    echo $enveloppe;
} catch (Exception $e) {
    // Handle potential encryption errors
    echo "Error: " . $e->getMessage();
}

 

Opción 2: OpenPGP.php (Independiente)

Esta biblioteca está completamente escrita en PHP. Su principal ventaja es que no depende del binario gpg del servidor, garantizando una portabilidad total de su código entre diferentes entornos.

# Install the OpenPGP.php library
composer require singpolyma/openpgp-php

Ejemplo de estructura básica:

<?php
require_once 'vendor/autoload.php';

// Use the library classes to handle OpenPGP packets 
// directly in PHP without system calls to the GPG binary.
// Example: $msg = OpenPGP_Message::parse(OpenPGP::unarmor($data));

¿Le ha sido útil esta FAQ?