2015-02-25 21 views
19

Khi tôi chạy $ php artisan env Tôi nhận được;Laravel 5 Cách chuyển từ Chế độ sản xuất

Current application environment: production 

Làm cách nào để thay đổi điều này thành phát triển hoặc điều gì đó tương tự? Vì vậy, tôi có thể nhìn thấy lỗi .. Tôi đã đọc a lot of the documentation nhưng nó không phải là ở tất cả các dễ dàng cho một newbie hiểu. Tôi không có kinh nghiệm cấu hình máy chủ, thực sự.

Tôi chắc chắn có cách "thông minh" để thực hiện việc này, nhưng tất cả những gì tôi quan tâm hiện nay là thay đổi môi trường theo cách thủ công. Làm thế nào để tôi làm điều này?

Trả lời

31

Laravel 5 nhận các biến liên quan đến môi trường của nó từ tệp .env nằm trong thư mục gốc của dự án của bạn. Bạn chỉ cần thiết lập APP_ENV để bất cứ điều gì bạn muốn, ví dụ:

APP_ENV=development 

này được sử dụng để xác định các môi trường hiện tại. Nếu bạn muốn hiển thị lỗi, bạn sẽ cần phải kích hoạt chế độ gỡ lỗi trong cùng một tệp:

APP_DEBUG=true 

Vai trò của các tập tin .env là để cho phép bạn có các cài đặt khác nhau tùy thuộc vào máy bạn đang chạy ứng dụng của bạn . Vì vậy, trên máy chủ sản xuất của bạn, cài đặt tệp .env sẽ khác với môi trường phát triển địa phương của bạn.

+0

Vì vậy, mỗi máy chủ/môi trường có tệp '.env' riêng của nó? Có đúng không? – mikelovelyuk

+6

Bạn có một tệp '.env', nhưng nội dung có thể khác nhau trên mỗi máy bạn chạy ứng dụng. Ví dụ trên máy cục bộ của bạn, bạn sẽ có 'APP_ENV = development' và' APP_DEBUG = true', nhưng trên máy chủ sản xuất của bạn các giá trị sẽ là 'APP_ENV = production' và' APP_DEBUG = false'. – Bogdan

+0

Vì vậy, vâng, mỗi máy chủ/môi trường có tệp '.env' riêng của nó. – Bogdan

11

Laravel 5 sử dụng .env tệp để định cấu hình ứng dụng của bạn. .env không được cam kết trên kho lưu trữ của bạn, như github hoặc bitbucket. Trên môi trường địa phương của bạn .env của bạn sẽ trông giống như sau:

# .env 
APP_ENV=local 

Đối với máy chủ sản xuất của bạn, bạn có thể có cấu hình sau:

# .env 
APP_ENV=production 
-4

Trong Laravel môi trường mặc định luôn là sản xuất.

Những gì bạn cần làm là xác định đúng hostname trong bootstrap/start.php cho các môi trường của bạn Eg .:

/* 
|-------------------------------------------------------------------------- 
| Detect The Application Environment 
|-------------------------------------------------------------------------- 
| 
| Laravel takes a dead simple approach to your application environments 
| so you can just specify a machine name for the host that matches a 
| given environment, then we will automatically detect it for you. 
| 
*/ 

$env = $app->detectEnvironment(array(
    'local' => array('homestead'), 
    'profile_1' => array('hostname_for_profile_1') 
)); 
+3

Câu hỏi đặt ra là Laravel 5. Giải pháp của bạn là dành cho Laravel 4. Trong L5 không còn tệp 'bootstrap/start.php' nữa. – Bogdan

+1

Cảm ơn nhận xét của bạn. Tôi không nhận ra điều đó. –

3

gì bạn cũng có thể có một cái nhìn tại là phương pháp tiếp xúc Application->loadEnvironmentFrom($file)

tôi cần một ứng dụng để chạy trên nhiều tên miền phụ. Vì vậy, trong bootstrap/app.php tôi thêm một cái gì đó như:

$envFile = '.env'; 
// change $envFile conditionally here 
$app->loadEnvironmentFrom($envFile); 
5

Đừng quên để chạy các lệnh php artisan config:clear sau khi bạn đã thực hiện các thay đổi đối với tập tin .env. Thực hiện lại thao tác này php artisan env, thao tác này sẽ trả lại phiên bản chính xác.

+0

Điều này đã lưu (các) ngày của tôi! Tôi không thể hiểu được chuyện gì đã xảy ra. Cho phép tất cả mọi thứ nhưng sau đó tôi thấy nhận xét này. Cảm ơn!! – tprj29

+0

Đã lưu cả ngày của tôi nữa. Cảm ơn, Sergio. – kR105

Các vấn đề liên quan