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, debido a la obsolescencia de la extensión nativa (se prefieren alternativas "PHP puro" o wrappers modernos).
Prólogo
- La extensión del sistema
PHP_GnuPGya no recibe mantenimiento por parte de la comunidad PHP y, por lo tanto, ya no está disponible en los entornos más recientes. - Existen dos alternativas principales en "PHP puro" (instalables a través de Composer) que permiten seguir firmando o cifrando sus datos de forma segura.
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, inicie sesión 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_gpgEjemplo 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á escrita íntegramente en PHP. Su principal ventaja es que no depende del binario gpg del servidor, lo que garantiza una portabilidad total de su código entre diferentes entornos.
# Install the OpenPGP.php library
composer require singpolyma/openpgp-phpEjemplo 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: https://faq.infomaniak.com/954
¿Le ha sido útil esta FAQ?