Base de conocimientos

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

Instalar una alternativa PHP pura

Actualización 30/04/2026

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 "puras de PHP" o envolventes modernas).

 

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 continuar firmando o cifrando sus datos de manera segura.

 

Opción 1: Crypt_GPG (Recomendado)

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

Para instalarlo, conectese por 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 ventaja principal 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?