• By Nacho
  • 30 de diciembre de 2023

Dónde está la cadena de conexión de la base de datos en prestashop 1.6, 1.7 y 8

Dónde está la cadena de conexión de la base de datos en prestashop 1.6, 1.7 y 8

Dónde está la cadena de conexión de la base de datos en prestashop 1.6, 1.7 y 8 1000 565 Nacho

Dificultad Media

Descubre el Código Fuente de PrestaShop y Encuentra la Cadena de Conexión de la Base de Datos

¿Alguna vez te has preguntado cómo funciona el corazón de PrestaShop? En este artículo, te sumergiremos en el código fuente de esta plataforma de comercio electrónico líder. Pero antes de llegar al meollo, veamos por qué es crucial entender dónde reside la cadena de conexión de la base de datos.

Antes de sumergirnos en el código fuente, comprendamos por qué conocer la cadena de conexión de la base de datos en PrestaShop es esencial. Esta información es vital para poder tener acceso a la propia base de datos a través de phpMyAdmin o con programas cono Heidi Sql o bien, a través de las opciones de gestión del servidor, si nos pide usuario y contraseña y no la hemos guardado.

Cómo exportar una base de datos a través del FTP sin tener los datos de la cadena de conexión a base de datos

También es importante, porque con ella podemos exportar la base de datos para tener copias de seguridad. ¿Esto a qué nos ayuda a sacar un marrón? En nuestro caso: teníamos un nuevo cliente, el cual tenía el hosting contratado con una empresa que revendía un hosting básico en Ionos (el antiguo 1&1). No nos daban accesos al servidor porque de dárnoslos, tendríamos acceso a todos sus clientes. Les pedimos que nos dieran una copia de las bases de datos del cliente. Les pusimos el enlace de la guía oficial de Ionos sobre cómo exportar una base de datos en el panel de Ionos. aunque sabíamos cómo hacerlo por experiencia con este proveedor y que esta acción es algo que tardas más en entrar al panel de control que en exportar. Al cliente le pasaron un presupuesto de 150€+IVA por la copia de seguridad de sus bases de datos. ¿WTF?

Como conseguimos que nos dieran unos accesos FTP, montamos un phpMyAdmin, sacamos las claves de los ficheros, accedimos y nos hicimos copias de todo en menos de 15 minutos. ¿Estamos locos o qué? Con el cliente nos marcamos un tanto buenísimo, así que, gracias a todas las empresas piratas y vende humos que nos ayudan a que nos consideren como profesionales, porque no queremos engañarles.  Este artículo os lo dedico.

Ubicando la Cadena de Conexión en PrestaShop 1.6

PrestaShop 1.6, aunque más antiguo, sigue siendo utilizado por muchos. La cadena de conexión se encuentra en el archivo de configuración principal. Dirígete a «/config/settings.inc.php» y busca la variable «$_DB_SERVER» si buscas la cadena de conexión de un PrestaShop 1.6. Ahí encontrarás la información que buscas.

El fichero tendrá este contenido:

<?php
define('_DB_SERVER_', 'localhost');
define('_DB_NAME_', 'NOMBRE_BASE_DE_DATOS');
define('_DB_USER_', 'USUARIO_BASE_DE_DATOS');
define('_DB_PASSWD_', 'CONTRASEÑA_BD');
define('_DB_PREFIX_', 'ps6_');
define('_MYSQL_ENGINE_', 'InnoDB');
define('_PS_CACHING_SYSTEM_', 'CacheMemcache');
define('_PS_CACHE_ENABLED_', '0');
define('_COOKIE_KEY_', 'jmGpioG2a30P4Qfx2a8YGHKRF9HjhASsbPuwpqL4RVustCmSPIhyTHOT');
define('_COOKIE_IV_', 'EQ6NiUzT');
define('_PS_CREATION_DATE_', '2015-07-06');
define('_PS_VERSION_', '1.6.1.1');
define('_RIJNDAEL_KEY_', 'jQs7MDDbec4JpAIaXabCR6BB9N1Xn5em');
define('_RIJNDAEL_IV_', 'JijXP11xgH1oLDWZaizhlA==');
define('_PS_DIRECTORY_', '/../../');

Navegando por PrestaShop 1.7 en Busca de la Cadena de Conexión

La versión 1.7 introdujo cambios significativos en la estructura del directorio. Para encontrar la cadena de conexión en la versión 1.7 de PrestaShop, abre el archivo «/app/config/parameters.php». Dentro, busca las variables relacionadas con la base de datos, como «$database_url».

El código de esta versión es el siguiente:

<?php

use Symfony\Component\Dotenv\Dotenv;

$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/.env');

define('_DB_SERVER_', $_ENV['DB_SERVER']);
define('_DB_NAME_', $_ENV['DB_NAME']);
define('_DB_USER_', $_ENV['DB_USER']);
define('_DB_PASSWD_', $_ENV['DB_PASSWORD']);
define('_DB_PREFIX_', $_ENV['DB_PREFIX']);
define('_DB_PORT_', $_ENV['DB_PORT']);
define('_MYSQL_ENGINE_', $_ENV['MYSQL_ENGINE']);
define('_PS_CACHING_SYSTEM_', $_ENV['PS_CACHING_SYSTEM']);

// ... Otras configuraciones ...

return $container;

En este ejemplo:

  • %database_host%, %database_port%, %database_name%, %database_user%, y %database_password% son marcadores de posición que se rellenarán con los valores reales de la base de datos.
  • %secret%, %locale%, %mailer_host%, %mailer_user%, y %mailer_password% son otros parámetros de la aplicación.

Adentrándonos en el Código Fuente de PrestaShop 1.8

Con la llegada de la versión 1.8, PrestaShop trae nuevas características. Para hallar la cadena de conexión en PrestaShop 8, revisa el archivo «/app/config/parameters.php». Aquí, las variables relevantes son similares a las de la versión 1.7.

El código será este:

<?php

use Symfony\Component\HttpFoundation\Request;

// ... Otras configuraciones ...

// Parámetros de la base de datos
$container->loadFromExtension('doctrine', [
    'dbal' => [
        'connections' => [
            'default' => [
                'driver' => 'pdo_mysql',
                'host' => '%database_host%',
                'port' => '%database_port%',
                'dbname' => '%database_name%',
                'user' => '%database_user%',
                'password' => '%database_password%',
                'charset' => 'utf8mb4',
            ],
        ],
    ],
]);

// ... Más configuraciones ...

// Parámetros de la aplicación
$container->setParameter('secret', '%secret%');
$container->setParameter('locale', '%locale%');
$container->setParameter('mailer_transport', 'smtp');
$container->setParameter('mailer_host', '%mailer_host%');
$container->setParameter('mailer_user', '%mailer_user%');
$container->setParameter('mailer_password', '%mailer_password%');

// ... Otras configuraciones ...

return $container;

 

Dejar una Respuesta