Tag Archive สภาพแวดล้อม

config codeigniter by environments

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

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

  1. ได้โดยเปิดไฟล์ \.htaccess เพิ่ม [code language=”text” title=”.htaccess”]…
    SetEnv CI_ENV development
    …[/code]เข้าไป หรือเข้าไปแก้ไฟล์ \index.php แก้บรรทัด[code language=”php” title=”index.php”]define(‘ENVIRONMENT’, isset($_SERVER[‘CI_ENV’]) ? $_SERVER[‘CI_ENV’] : ‘development’);[/code]เป็น[code language=”php” title=”index.php”]define(‘ENVIRONMENT’, ‘development’);[/code]
  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[code language=”php” title=”pplicationconfigdevelopmentconstants.php”]<?php
    defined(‘BASEPATH’) or exit(‘No direct script access allowed’);

    define(‘TITLE’, ‘development’);
    [/code]ทำแบบเดียวกันกับไฟล์อื่นๆ ถ้ามี config ที่ต่างกัน เช่น \application\config\development\database.php

  4. ทดสอบโดยเปิดไฟล์ \application\views\welcome_message.php แก้เป็น[code language=”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>[/code]

  5. เปิดหน้าแรกและสังเกตผลลัพธ์

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

ติดตั้ง yii 2 advance ผ่าน composer

YII เพิ่งออกเวอร์ชั่น 2 มาวันที่ 12 ตุลาคม พ ศ 2557 เลยเอามาลองของซักหน่อย ก่อนอื่นให้ลง composer สำหรับติดตั้งตามยุคสมัย (จริงๆ โหลด zip มาแตกเองง่ายกว่าด้วยซ้ำไป ถ้าไม่ต้องการใช้ composer ให้โหลด zip มาแล้วข้ามขั้นตอนที่ 1 ไปเลยครับ)

  1. ก่อนอื่น update เจ้า composer ซะก่อนตามธรรมเนียม รีสตาร์ต เพื่อป้องกันปัญหาเปิด command ออกมาพิมพ์
    [code language=”text”]
    composer self-update
    [/code]
    ลง composer asset plugin ทำครั้งเดียวไม่ต้องทำอีก
    [code language=”text”]
    composer global require "fxp/composer-asset-plugin:1.0.0"
    [/code]
    โดยปกติ จะสร้าง yii project ได้โดยคำสั่ง
    [code language=”text”]
    composer create-project –prefer-dist yiisoft/yii2-app-basic basic
    [/code]
    composer จะ copy ไปไว้ใน folder ชื่อ basic งานที่จะทำเหมาะกับ yii Advanced Application Template มากกกว่า ที่ต่างกันคือ

    • แยก Front- and และ back-end apps ระบบใหญ่ๆ ควรแยกไว้เพื่อความสะดวกที่สำคัญ yii สามารถใช้ configuration และ model ร่วมกันได้ ทั้ง 2 ฝั่ง
    • User model มีระบบ login, User signup and password restore เบื้องต้นติดมาด้วย

    และต้องการให้เก็บใน D:\xampp\htdocs\YiiAdvanced ให้เปลี่ยนคำสั่งเป็น
    [code language=”text”]
    composer create-project –prefer-dist yiisoft/yii2-app-advanced D:\xampp\htdocs\YiiAdvanced
    [/code]

  2. ปรับสภาพแวดล้อมให้ช่วยเขียน code ได้ง่ายขึ้น
    • ไปที่เราติดตั้ง php ไว้ก่อน พิมพ์
      [code language=”text”]
      cd c:\xampp\php
      [/code]
    • พิมพ์
      [code language=”text”]
      php D:\xampp\htdocs\YiiAdvanced\init
      [/code]
    • เลือก Development พิมพ์ 0 enter ขึ้นจริง 1 enter
  3. สร้าง database
    • สร้าง database เปล่าๆ ไว้ก่อน ของผมชื่อ YiiAdvanceDB
    • ไปที่ common/config/main-local.php ใน folder ที่เราสร้างไว้ เพิ่ม database connection ใน components ตามตัวอย่าง
      [code language=”php”]
      ‘components’ => [
      ‘db’ => [
      ‘class’ => ‘yii\db\Connection’,
      ‘dsn’ => ‘mysql:host=localhost;dbname=YiiAdvanceDB’,
      ‘username’ => ‘root’,
      ‘password’ => ”,
      ‘charset’ => ‘utf8’,
      ],
      [/code]
    • Command กลับไปที่เราเก็บ project file
      [code language=”text”]
      d:
      cd D:\xampp\htdocs\YiiAdvanced
      [/code]
    • พิมพ์
      [code language=”text”]
      yii migrate[/code]
      ตอบ yes ดูในฐานข้อมูล จะมีตาราง user กับ migrate เพิ่มขึ้นมา

การเตรียมโปรเจ็คด้วยยี่สำเร็จแล้ว! หวังว่าคงเข้าใจมากกว่าในคู่มือเว็บ yii นะครับ