[How to] เปลี่ยน Environment ตามกำหนดของ Laravel

laravel logo

ปกติเวลาเราจะทำเว็บไซร์เราก็จะต้องการค่า config ที่แตกต่างกันยกตัวอย่างง่ายๆคืออย่างเช่น บน server จริงนั้นเราอาจจะให้ตัว Laravel สั่งให้เปิด cache ลดภาระของ server แต่เวลาเราทำการ Dev ( พัฒนา ) เราคงไม่อยากให้มันเก็บ cache ซึ่งเราจะมานั่งปรับค่าไปมาก็ใช่เรื่องวันนี้ผมจึงมาแนะนำว่าทำอย่างไรครับ

โดยขั้นตอนที่จะทำมีดังนี้ครับง่ายๆเลย เข้าไปที่ Folder config ครับแล้วสร้าง new folder มาใหม่ชื่อ local ในขั้นตอนที่สอนเนี้ยเราจะทำการให้ตัว laravel ตรวจดูว่าหากเราทำการ Dev ที่เครื่องเราจะไม่ทำการเก็บ cache นะครับ เสร็จแล้วให้เราทำการสร้าง File ชื่อว่า cache.php ใน folder local ครับ path จะเป็นดังนี้ครับ

config/local/cache.php

ซึ่งใน file cache.php เราจะเขียนโค้ดไว้ดังนี้ครับ

return array(

    'driver' => 'file',

);

มีข้อกำหนดว่า อย่าตั้งชื่อว่า testing นะครับทาง Laravel ขอสงวนไว้สำหรับ unit testing ครับ

เราไม่จำเป็นต้องปรับทุกอย่างครับ อันไหนเราไม่ต้องการเปลี่ยนตัว Laravel จะเอาตัว config พื้นฐานเดิมมาให้อยู่แล้วครับ

ที่เราทำกันมาคือการเตรียมการให้ Laravel ใช้งาน file ที่เราเตรียมต่อไปคือการทำให้ตัว Laravel ตรวจจับว่าเรากำลังใช้เว็บแบบไหน production หรือว่า dev อยู่นั่นเองครับ โดยค่า environment จะมีค่าปกติ ( default ) เป็น production ครับทำให้จะเก็บ cache มันทำให้เราลำบากในการ dev เว็บไซร์ครับผม เราจะต้องทำการเปลี่ยนอะไรบ้างค่าเล็กน้อยดังนี้ครับ

ให้คุณเข้าไปดูใน file bootstrap/start.php ครับจะเห็นว่ามีบรรทัดนี้อยู่

$env = $app->detectEnvironment(array(

    'local' => array('your-machine-name'),

));

ตอนแรกที่ผมเข้าใจคือว่าเอาชื่อเครื่องเราไปใส่แต่ไม่ใช่ครับ เราต้องใส่ให้มันตรงกับเวลาที่เรา Dev เช่นเราทำการ Dev ที่ localhost/… อย่างนี้เราต้องทำการใส่ค่าดังนี้ครับ


$env = $app->detectEnvironment(array(

'local' => array('localhost', '127.0.0.1'),

));

โดยค่าด้านซ้ายที่เขียนว่า local นั่นคือชื่อของ environment ที่เราจะให้ทาง laravel เรียกเมื่อตรงกับเงื่อนไขครับ หากคุณสร้าง folder ว่า dev ก็ให้เปลี่ยนค่าทางซ้ายมือว่า dev ครับ

แล้วเราจะรู้ได้อย่างไรว่ามันทำการเปลี่ยนแปลงแล้วให้ลองง่ายๆไปเขียนใน Route ก็ได้ครับ

$environment = App::environment();

 

แล้วทำการ echo ค่าออกมาก็จะรู้แหละครับว่า ณ​ ที่กำลังพัฒนาโอเคครับถ้ามีตรงปัญหาตรงไหนสอบถามได้ครับ

ถ้าคุณชอบบทความในเว็บนี้ และอยากสนับสนุนเรา เพียงแค่คุณสมัครรับข่าวสารด้านล่างจะได้รับสิทธิ์พิเศษก่อนใคร เราสัญญาว่าจะส่งบทความที่เป็นประโยชน์ต่อคุณอย่างแน่นอนครับ

Loading

Comments

  1. ผมก็ใส่ your-machine-name เป็นชื่อเครื่อง App::environment(); มันก็ return ‘local’ อยู่นะครับ

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Message us

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ปฎิเสธทั้งหมด
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

  • คุกกี้ที่จำเป็น

    คุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

บันทึก