Menu

Showing posts with label environment variable. Show all posts
Showing posts with label environment variable. Show all posts

Friday, December 6, 2019

[Bash Script] วิธีการใช้ Environment Variables จากไฟล์ .env ใน Bash Script
[Bash Script] How to Use Environment Variables from .env File in Bash Script

สมมติว่า Bash script ที่เราจะกำลังเขียนใหม่อยู่ใน folder เดียวกับไฟล์ .env และไฟล์ .env มีข้อมูลดังนี้
DOMAIN="code2now.com"
เราสามารถเขียน script ของเรา เพื่อใช้งานข้อมูลในไฟล์ .env ดังนี้
# Set allexport option 
set -a
. ./.env
set +a

echo $DOMAIN
คำอธิบายเพิ่มเติม

set -a และ set +a เป็นการเปิดและปิด feature ที่ทำให้ตัวแปรที่ถูกประกาศระหว่าง 2 บรรทัดนี้ ถูก export เป็น environment variable

. ./.env เป็นการโหลด source จากไฟล์ .env

echo $DOMAIN เป็นตัวอย่างการใช้งาน environment variable จากไฟล์ .env

Monday, October 14, 2019

[Windows] ข้อควรระวัง: การตั้งค่า Environment Variables สำหรับ User ที่ถูกสร้างใหม่
[Windows] Warning: Setting Environment Variables for New User

กรณีนี้เริ่มจากเราสร้าง User ใหม่ ชื่อ Arzeroid โดยไม่ได้ใช้ User lenovo เดิมที่มีสิทธิ์เป็น Administrator ที่มากับเครื่องในตอนแรก

หลังจากนั้นทำการติดตั้ง Docker Toolbox ใน Arzeroid ผลปรากฏว่า ไม่สามารถรัน Docker Toolbox ได้ โดยได้ข้อผิดพลาดว่า หาไฟล์ vboxmanage.exe ไม่เจอ

เมื่อทำการตรวจสอบ พบว่า ในหน้าจอของ Environment Variables ของ Arzeroid มีส่วนของ User variables เป็นของ lenovo และ Docker Toolbox ก็มาสร้าง Environment Variable ไว้ในส่วนนี้ ดังภาพด้านล่าง


เมื่อตรวจสอบ User ที่กำลังใช้งานอยู่ผ่าน Windows PowerShell ก็ได้เป็น Arzeroid ตามภาพด้านล่าง


เราจึงย้าย User variables ที่ถูกสร้างขณะติดตั้ง Docker Toolbox มาใส่ใน System variables ผลที่ได้คือ สามารถรัน Docker Toolbox ได้ตามปกติ

Tuesday, September 17, 2019

[Laravel - Laradock] ข้อควรระวัง: การใช้ Laradock สำหรับการรันหลายโปรเจค จะทำให้ data folder ของแต่ละโปรเจคทับกัน ถ้าตั้งค่า env ไม่ถูกต้อง
[Laravel - Laradock] Warning: Using Laradock for Many Projects will Use the Same Data Folder if Set env Incorrect

เวลาที่เรา build และ run container ของ Laradock จะมีการสร้าง folder สำหรับเก็บข้อมูลของ Laradock ที่ path ~/.laradock/data ซึ่งเป็นค่าตั้งต้นใน env-example

Folder นี้จะเก็บข้อมูล data ของ mysql, redis และอื่นๆที่จำเป็นไว้

ถ้าหากเราใช้ Laradock ในการรันโปรเจคมากกว่า 1 โปรเจค โดยไม่แก้ไข path ดังกล่าว จะทำให้ทุกโปรเจคใช้งาน data folder ที่ path เดียวกัน

แน่นอน!!! มันจะเกิดข้อผิดพลาดขึ้นแน่นอน...

สมมติว่า โปรเจคนั้นๆใช้ mysql container ของ Laradock เป็น database

สิ่งที่ต้องเจอแน่ๆเลย คือ ข้อมูลหาย!!! เพราะ data ของโปรเจคนึงไปทับของอีกโปรเจคนึง

วิธีการป้องกัน คือ แก้ไขไฟล์ .env ใน Laradock ดังนี้
# Choose storage path on your machine. For all storage systems

DATA_PATH_HOST=~/.laradock/{project_name}
โดยที่ {project_name} เป็นชื่อของโปรเจคที่จะรันโดย Laradock

Thursday, August 15, 2019

[Laravel - Config] วิธีการเพิ่มหรือแก้ไขค่าตัวแปรในไฟล์ .env ในขณะ Runtime
[Laravel - Config] How to Add or Modify Variable Value in .env File at Runtime

ไฟล์ .env เป็นไฟล์สำหรับเก็บค่า environment variables ต่างๆของ Application

โดยปกติแล้ว เราสามารถใส่ชื่อตัวแปรและค่าของตัวแปรนั้นๆเข้าไปในไฟล์ .env ได้เลย

แต่ในบางกรณี เราไม่สามารถกำหนดค่าของตัวแปรนั้นได้ เช่น ค่าที่ต้อง encrypt ผ่าน Application หรือค่าของตัวแปรนั้นสามารถหาได้ในขณะ Runtime เท่านั้น เช่น IP address ของ Host server เป็นต้น

Thursday, August 8, 2019

[Laravel - Scheduler] การใช้ Environment Variable ของระบบปฏิบัติการใน Laravel Scheduler
[Laravel - Scheduler] How to Use Environment Variable of Operating System in Laravel Scheduler

Laravel scheduler ใช้ Crontab ในการรันคำสั่งต่างๆตามเวลาที่กำหนดบน Linux

เมื่อเราต้องการใช้งาน Laravel scheduler เราเพียงเพิ่มการตั้งค่าตามด้านล่างนี้ใน Cron ของ server
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
สำหรับการใช้ Environment Variable ของระบบปฏิบัติการ เราจำเป็นต้องสร้าง shell script ขึ้นมาตัวนึง เพื่อ export ตัวแปรที่เราต้องการใช้ก่อน

Monday, July 1, 2019

[PHP] วิธีการเปิดใช้ environment variables ใน PHP FPM
[PHP] How to Enable Environment Variables in PHP FPM

PHP FPM จะถูก clear environment variables ออก เนื่องจากเหตุผลทางด้านความปลอดภัย

แต่ในบางครั้งเรามีความจำเป็นต้องใช้ตัวแปรพวกนี้ เช่น environment variables ที่ถูกส่งผ่านเข้ามาจากการสร้าง Docker image เพื่อเก็บข้อมูล log หรือสถิติต่างๆ

สำหรับการอนุญาตให้ environment variables ถูกส่งต่อไปยัง PHP FPM ให้แก้ไขไฟล์ /etc/php/7.2/fpm/pool.d/www.conf โดยเอา comment บรรทัดข้างล่างนี้ออก
;clear_env = no
จะได้ผลลัพธ์ดังภาพข้างล่าง

หลังจากนั้นให้ restart service php7.2-fpm ด้วยคำสั่งดังนี้
service php7.2-fpm restart