Nous avons une configuration de projet qui a trois branches git différentes (développement, mise en scène et production). Nous essayons de trouver le meilleur moyen de configurer (si possible) le fichier configuration.php pour chaque branche.
Une approche que nous avons adoptée a été de créer un constructeur sur le fichier configuration.php, de vérifier le $ _SERVER ['DOCUMENT_ROOT'] et de modifier la propriété pour chaque branche/environnement. Cela fonctionne jusqu'à ce que quelqu'un le modifie et l'enregistre, ce qui supprime le constructeur et le restaure à la structure par défaut de configuration.php.
Existe-t-il un moyen, sans pirater le coeur, d’avoir un fichier configuration.php spécifique à l’environnement ou est-ce le meilleur moyen de placer simplement le fichier configuration.php dans .gitignore?
Concernant la façon dont Joomla charge le fichier configuration.php dans index.php, à la ligne 29
if (file_exists(__DIR__ . '/defines.php'))
{
include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
}
Vous pouvez créer un fichier define.php personnalisé dans le répertoire racine de Joomla, puis personnaliser la valeur "JPATH_CONFIGURATION", comme suit:
<?php
/**
* @package Joomla.Site
*
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
define('_JDEFINES', 1);
define('JPATH_BASE', dirname(__FILE__));
$branch = $_REQUEST["branch"];
// Global definitions
$parts = explode(DIRECTORY_SEPARATOR, JPATH_BASE);
// Defines.
define('JPATH_ROOT', implode(DIRECTORY_SEPARATOR, $parts));
define('JPATH_SITE', JPATH_ROOT);
define('JPATH_CONFIGURATION', JPATH_ROOT . DIRECTORY_SEPARATOR .'configurations' . DIRECTORY_SEPARATOR .$branch);
define('JPATH_ADMINISTRATOR', JPATH_ROOT . DIRECTORY_SEPARATOR . 'administrator');
define('JPATH_LIBRARIES', JPATH_ROOT . DIRECTORY_SEPARATOR . 'libraries');
define('JPATH_PLUGINS', JPATH_ROOT . DIRECTORY_SEPARATOR . 'plugins');
define('JPATH_INSTALLATION', JPATH_ROOT . DIRECTORY_SEPARATOR . 'installation');
define('JPATH_THEMES', JPATH_BASE . DIRECTORY_SEPARATOR . 'templates');
define('JPATH_CACHE', JPATH_BASE . DIRECTORY_SEPARATOR . 'cache');
define('JPATH_MANIFESTS', JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'manifests');
En créant
MISE À JOUR
Pour l'administrateur, vous devez créer un autre fichier define.php dans le répertoire/administrator.
<?php
/**
* @package Joomla.Administrator
*
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
define('_JDEFINES', 1);
define('JPATH_BASE', dirname(__FILE__));
$branch = $_REQUEST["branch"];
// Global definitions
$parts = explode(DIRECTORY_SEPARATOR, JPATH_BASE);
array_pop($parts);
// Defines
define('JPATH_ROOT', implode(DIRECTORY_SEPARATOR, $parts));
define('JPATH_SITE', JPATH_ROOT);
define('JPATH_CONFIGURATION', JPATH_ROOT . DIRECTORY_SEPARATOR .'configurations' . DIRECTORY_SEPARATOR .$branch);
define('JPATH_ADMINISTRATOR', JPATH_ROOT . DIRECTORY_SEPARATOR . 'administrator');
define('JPATH_LIBRARIES', JPATH_ROOT . DIRECTORY_SEPARATOR . 'libraries');
define('JPATH_PLUGINS', JPATH_ROOT . DIRECTORY_SEPARATOR . 'plugins');
define('JPATH_INSTALLATION', JPATH_ROOT . DIRECTORY_SEPARATOR . 'installation');
define('JPATH_THEMES', JPATH_BASE . DIRECTORY_SEPARATOR . 'templates');
define('JPATH_CACHE', JPATH_BASE . DIRECTORY_SEPARATOR . 'cache');
define('JPATH_MANIFESTS', JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'manifests');
define ('_ JDEFINES', 1); ligne empêche Joomla de charger le fichier includes/define.php.
$ branch peut être défini en ce qui concerne $ _REQUEST, le sous-domaine de capture ou ce que vous voulez.