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 "puras de PHP" o envolventes modernas).
Prólogo
- La extensión del sistema
PHP_GnuPGya 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));
Enlace a esta FAQ:
¿Le ha sido útil esta FAQ?