2014-08-29 25 views
5

Tôi đang sử dụng Github để triển khai các trang web của mình đến máy chủ sản xuất của mình. Bởi vì điều này tôi không muốn được lưu trữ .env. *. Php tập tin tất cả mọi thứ vì vậy họ đang ở trong .gitignore của tôi.Biến môi trường và nghệ nhân không hoạt động trên máy chủ sản xuất

Trong mỗi thư mục môi trường tôi đã thiết lập các cấu hình cơ sở dữ liệu để sử dụng getenv(), ví dụ:

<?php 

'connections' => array(

    'mysql' => array(
     'driver' => 'mysql', 
     'host'  => getenv('DB_HOST'), 
     'database' => getenv('DB_NAME'), 
     'username' => getenv('DB_USERNAME'), 
     'password' => getenv('DB_PASSWORD'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ), 


), 

); 

Tôi đã sau đó đi vào file conf apache cho các máy ảo của tôi và thiết lập các biến môi trường, như vậy:

SetEnv DB_HOST ***.***.***.*** 
SetEnv DB_NAME database 
SetEnv DB_USERNAME databaseuser 
SetEnv DB_PASSWORD databasepass 

Tất cả đều hoạt động hoàn hảo trên máy chủ sản xuất.

Tuy nhiên, tôi vừa nhập thủ công cơ sở dữ liệu vào lúc này thay vì sử dụng php artisan migrate vì nó không hoạt động.

Tôi biết nó không hoạt động bởi vì nó không đánh apache nên các biến không được thiết lập, nhưng tôi đã thử nhiều cách để thử và giải quyết vấn đề này nhưng tôi không có may mắn chưa.

tôi đã cố gắng buộc môi trường để xem nếu nó có thể nhận được các biến bằng cách sử dụng php artisan --env=production migrate

Tôi cũng đã thử kiểm tra xem nó bằng cách sử dụng môi trường đúng bằng cách chạy php artisan env và nó sử dụng các môi trường sản xuất đó là chính xác .

Ý tưởng tiếp theo của tôi là tạo tệp .env.production.php theo cách thủ công trên máy chủ sản xuất. Tôi tạo ra một và sử dụng getenv() chỉ trong trường hợp nó làm việc như thế này, nhưng cùng một lỗi xảy ra, vì vậy tôi đã cố gắng thiết lập các biến bằng tay mà không sử dụng getenv() và tôi vẫn không có may mắn.

Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao.

+0

file sản xuất .env được gọi là .env.php không .env.production.php –

+0

tôi đã thiết lập một môi trường trong bootstrap/start.php với tên 'sản xuất', sẽ này không làm việc sao? – Karl

+0

Tôi vừa thử tệp .env.php, hoạt động nếu tôi đặt biến theo cách thủ công, có cách nào tôi có thể sử dụng các biến được đặt qua apache để làm việc với nghệ nhân không? – Karl

Trả lời

1

Bạn nên sử dụng .env.php tệp như được mô tả trong laravel docs.

Đối với thiết lập biến môi trường trong sản xuất, bạn sử dụng một file có tên .env.php trong thư mục gốc của dự án:

<?php 

# .env.php 

return array(

    'DB_HOST' => 'localhost', 
    'DB_NAME' => 'my_database', 
    'DB_USER' => 'user_name', 
    'DB_PASS' => 'super-secret-sauce', 

); 

Đối với các môi trường khác nhau, bạn sử dụng file .env khác nhau. Ví dụ: trong môi trường địa phương bạn sẽ sử dụng và cho kiểm tra bạn sẽ sử dụng .env.testing.php.

Khi chạy lệnh thủ công như migrate hoặc db:seed bạn có thể chỉ định môi trường bằng cách sử dụng tùy chọn --env=.

Ví dụ $ php artisan db:seed --class=UsersTableSeeder --env=testing

+0

.vi tập tin chỉ hoạt động trong laravel 5. Ông đang sử dụng laravel 4 –

+0

@RichardTorcato: '.env. *. Php' tập tin cho laravel 4.' .env' tập tin cho laravel 5. Cách dễ nhất để nói sự khác biệt là các tệp env trong L4 là các tệp php. Ngoài ra, liên kết tôi chỉ vào trong tài liệu là Laravel 4 cụ thể. – ryanwinchester

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