Tag Archive environments

Byphunsanit

config codeigniter by environments

ที่ทำงานมี process ในการพัฒนา development > test > production โดยแต่ละ server จะมี config และ database แยกออกจากกันเพื่อความปลอดภัย โดย codeigniter สามารถแยก config ได้โดยการเปลี่ยน Environments ซึ่งโดยปกติจะมี 3 สภาพแวดล้อมคือ development, production, testing และแล้วแต่ท่านจะตั้ง

การทำระบบ config สามารถทำได้โดย

  1. ได้โดยเปิดไฟล์ \.htaccess เพิ่ม
    ...
    SetEnv CI_ENV development
    ...

    เข้าไป หรือเข้าไปแก้ไฟล์ \index.php แก้บรรทัด

    define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

    เป็น

    define('ENVIRONMENT', 'development');
  2. ไปที่ \application\config สร้าง folder ไว้เก็บ configuration ตามชื่อ Environments เช่น \application\config\development, \application\config\production, \application\config\testing
  3. copy config ไฟล์ มาจาก \application\config จากนั้นก็ลบข้อมูลเดิมออกแล้วใส่เฉพาะส่วนที่แตกต่างกันเช่น \application\config\development\constants.php
    <?php
    defined('BASEPATH') or exit('No direct script access allowed');
    
    define('TITLE', 'development');
    

    ทำแบบเดียวกันกับไฟล์อื่นๆ ถ้ามี config ที่ต่างกัน เช่น \application\config\development\database.php

  4. ทดสอบโดยเปิดไฟล์ \application\views\welcome_message.php แก้เป็น
    <?php
    defined('BASEPATH') or exit('No direct script access allowed');
    ?><!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="utf-8">
    	<title><?=TITLE;?></title>
    
    	<style type="text/css">
    
    	::selection { background-color: #E13300; color: white; }
    	::-moz-selection { background-color: #E13300; color: white; }
    
    	body {
    		background-color: #fff;
    		margin: 40px;
    		font: 13px/20px normal Helvetica, Arial, sans-serif;
    		color: #4F5155;
    	}
    
    	a {
    		color: #003399;
    		background-color: transparent;
    		font-weight: normal;
    	}
    
    	h1 {
    		color: #444;
    		background-color: transparent;
    		border-bottom: 1px solid #D0D0D0;
    		font-size: 19px;
    		font-weight: normal;
    		margin: 0 0 14px 0;
    		padding: 14px 15px 10px 15px;
    	}
    
    	code {
    		font-family: Consolas, Monaco, Courier New, Courier, monospace;
    		font-size: 12px;
    		background-color: #f9f9f9;
    		border: 1px solid #D0D0D0;
    		color: #002166;
    		display: block;
    		margin: 14px 0 14px 0;
    		padding: 12px 10px 12px 10px;
    	}
    
    	#body {
    		margin: 0 15px 0 15px;
    	}
    
    	p.footer {
    		text-align: right;
    		font-size: 11px;
    		border-top: 1px solid #D0D0D0;
    		line-height: 32px;
    		padding: 0 10px 0 10px;
    		margin: 20px 0 0 0;
    	}
    
    	#container {
    		margin: 10px;
    		border: 1px solid #D0D0D0;
    		box-shadow: 0 0 8px #D0D0D0;
    	}
    	</style>
    </head>
    <body>
    
    <div id="container">
    	<h1>Welcome to CodeIgniter!</h1>
    
    	<div id="body">
    <?php
    echo '<br>ENVIRONMENT = ' . ENVIRONMENT;
    echo '<br>FILE_READ_MODE = ' . FILE_READ_MODE;
    echo '<br>title = ' . TITLE;
    ?>
    	</div>
    
    	<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo (ENVIRONMENT === 'development') ? 'CodeIgniter Version <strong>' . CI_VERSION . '</strong>' : ''; ?></p>
    </div>
    
    </body>
    </html>
  5. เปิดหน้าแรกและสังเกตผลลัพธ์

ค่าในไฟล์ config จะถูกเพิ่มจากของเดิมโดยเลือกมาจากไฟล์ใน folder ที่ชื่อเดียวกับ environments ไม่ใช่แทนที่ของเดิมสังเกตได้จากค่า FILE_READ_MODE ที่ไม่มีในไฟล์ \application\config\development\constants.php ที่เราแยกออกมา