2017-10-08 4 views
0

J'essaie d'exécuter la même base de code sur le même serveur mais avec une configuration d'environnement différente, ce que j'essaye de réaliser est très simple: Si l'utilisateur va à: https://server/app: Ceci charge l'environnement de production Si les utilisateurs vont à: https://server/app-test: ceci charge l'environnement de développement, la seule chose que je devrai charger différemment est la connexion à la base de données.Yii2: Configuration de plusieurs environnements sur la même base de code

Y a-t-il un moyen de le faire?

Merci

+0

vous avez deux répertoires d'application séparés? un dans/serveur/app et un dans/serveur/app-test? – scaisEdge

+0

@scaisEdge Non, je veux utiliser la même base de code (même dossier) mais le script d'entrée différent, le script d'entrée chargera seulement une connexion de base de données différente. – TechMafioso

+1

http://www.yiiframework.com/doc-2.0/guide-concept-configurations.html ou https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/structure-environments .Maryland. Vous avez deux options: 1. définir la variable dépendante de l'environnement "YII_ENV", 2. charger le fichier spécifique à la configuration. – lubosdz

Répondre

-1

Il semble que vous rencontrez deux répertoires différents, si tel est le cas, utilisez les deux connexions différentes sur les deux applications.

Ou

Je pense que vous essayez d'atteindre les objectifs suivants:

Une base de données de connexions et applications différentes. Si cela est juste, procéder aux étapes suivantes:

  1. Créer une connexion de base de données, par exemple db.php dans votre répertoire config

    <?php 
    return [ 
        'class' => 'yii\db\Connection', 
        'dsn' => 'mysql:host=localhost;dbname=dbname', 
        'username' => 'user', 
        'password' => 'password', 
        'charset' => 'utf8', 
    ]; 
    ?> 
    
  2. Appelez le fichier db2.php dans votre web.php fichier, dans la section des composants:

    'db2' => require(__DIR__ . '/db2.php'), 
    
  3. Où que vous souhaitez utiliser cette connexion de base de données, substituez la connexion de base de données par défaut avec la connexion db2:

    class X extends ActiveRecord { 
    
    public static function getDb() { 
        return Yii::$app->get('db2'); // second database 
    } 
    
    public $ids; 
    /** 
    * @inheritdoc 
    */ 
    public static function tableName() { 
        return 'dbName'; 
    } 
    
    /** 
    * @inheritdoc 
    */ 
    public function rules() { 
        return [ 
         // Rules as per your Database 
        ]; 
    } 
    
    /** 
    * @inheritdoc 
    */ 
    public function attributeLabels() { 
        return [ 
         'id' => 'ID', 
        ]; 
    } 
    } 
    

Notez que je l'ai utilisé cette connexion dans le modèle X.

+0

OP veut utiliser une application de répertoire avec 2 connexions différentes, ne dépendant pas de la fonction prioritaire dans la classe 'ActiveRecord'. – Yupik