Tôi muốn tạo ứng dụng web Laravel cho phép người dùng quản trị thay đổi một số biến (chẳng hạn như thông tin đăng nhập cơ sở dữ liệu) trong tệp .env bằng hệ thống phụ trợ web. Nhưng làm cách nào để lưu các thay đổi?Làm thế nào để thay đổi các biến trong tệp .env động trong Laravel?
Trả lời
Không có cách nào được xây dựng để thực hiện điều đó. Nếu bạn thực sự muốn thay đổi nội dung của tệp .env
, bạn sẽ phải sử dụng một số loại chuỗi thay thế kết hợp với các phương pháp ghi tệp của PHP. Đối với một số cảm hứng, bạn nên có một cái nhìn tại các lệnh key:generate
: KeyGenerateCommand.php:
$path = base_path('.env');
if (file_exists($path)) {
file_put_contents($path, str_replace(
'APP_KEY='.$this->laravel['config']['app.key'], 'APP_KEY='.$key, file_get_contents($path)
));
}
Sau khi đường dẫn tập tin được xây dựng và tồn tại được chọn, lệnh đơn giản thay thế APP_KEY=[current app key]
với APP_KEY=[new app key]
. Bạn sẽ có thể thực hiện cùng chuỗi thay thế bằng các biến khác.
Cuối cùng nhưng không kém phần quan trọng, tôi chỉ muốn nói rằng có thể không phải là ý tưởng tốt nhất để cho phép người dùng thay đổi tệp .env. Đối với hầu hết các cài đặt tùy chỉnh, tôi khuyên bạn nên lưu trữ chúng trong cơ sở dữ liệu, tuy nhiên đây rõ ràng là một vấn đề nếu chính thiết lập đó là cần thiết để kết nối với cơ sở dữ liệu.
tôi đã cùng một vấn đề và đã tạo ra các chức năng dưới đây
public static function changeEnvironmentVariable($key,$value)
{
$path = base_path('.env');
if(is_bool(env($key)))
{
$old = env($key)? 'true' : 'false';
}
if (file_exists($path)) {
file_put_contents($path, str_replace(
"$key=".$old, "$key=".$value, file_get_contents($path)
));
}
}
Tuy nhiên, thực hiện khác, trong trường hợp bạn có một cái gì đó như:
A = B #this là một mục hợp lệ
Trong tệp .env của bạn
public function updateEnv($data = array())
{
if (!count($data)) {
return;
}
$pattern = '/([^\=]*)\=[^\n]*/';
$envFile = base_path() . '/.env';
$lines = file($envFile);
$newLines = [];
foreach ($lines as $line) {
preg_match($pattern, $line, $matches);
if (!count($matches)) {
$newLines[] = $line;
continue;
}
if (!key_exists(trim($matches[1]), $data)) {
$newLines[] = $line;
continue;
}
$line = trim($matches[1]) . "={$data[trim($matches[1])]}\n";
$newLines[] = $line;
}
$newContent = implode('', $newLines);
file_put_contents($envFile, $newContent);
}
Cập nhật câu trả lời của Erick với xem xétGiá trịbao gồm các giá trị sting, bool và null.
public static function changeEnvironmentVariable($key,$value)
{
$path = base_path('.env');
if(is_bool(env($key)))
{
$old = env($key)? 'true' : 'false';
}
elseif(env($key)===null){
$old = 'null';
}
else{
$old = env($key);
}
if (file_exists($path)) {
file_put_contents($path, str_replace(
"$key=".$old, "$key=".$value, file_get_contents($path)
));
}
}
- 1. Làm thế nào để truy cập các biến các laravel .env bên trong bản thân
- 2. Laravel phân tích cú pháp tệp .env như thế nào?
- 3. Làm thế nào để truy cập các biến laren .env bên trong javascript?
- 4. Cách tạo tệp .env để kiểm tra với Laravel Dusk
- 5. Thay đổi TimeZone động trong laravel
- 6. Làm thế nào để thay đổi đặt lại mật khẩu email chủ đề trong laravel?
- 7. Làm cách nào để sử dụng SED mà không có tệp có biến env?
- 8. Làm thế nào để thay đổi trường hợp của các biến nội suy trong tệp miền địa phương Rails?
- 9. Làm thế nào để tự động thay đổi tên tệp khi viết trong một vòng lặp?
- 10. Làm thế nào để thay thế lớp Laravel Builder
- 11. Các url động trong laravel?
- 12. Làm thế nào để thiết lập một biến env trong Powershell nếu nó không tồn tại?
- 13. Làm thế nào để thay đổi chuỗi các hành động con trong MVC
- 14. Làm thế nào để sử dụng nodemon với các tập tin .env?
- 15. Thay thế biến Teamcity trong tệp nuspec
- 16. Làm thế nào để bình luận trong tập tin larke .env?
- 17. Làm cách nào để thay đổi tệp AndroidManifest.xml dựa trên các biến thể xây dựng?
- 18. Làm cách nào để thay thế các tab bằng dấu cách trong các biến trong PHP?
- 19. Làm cách nào để sửa đổi di chuyển trong Laravel?
- 20. Thay đổi các biến trong bash
- 21. Làm thế nào để bao gồm csrf_token() trong một tệp js bên ngoài trong Laravel?
- 22. Làm thế nào để thay đổi chiều cao băng động?
- 23. Thay thế các biến trong i18next
- 24. Làm thế nào để thay đổi nhãn dendrogram trong r
- 25. Làm thế nào tôi có thể giải mã các biến an toàn env?
- 26. Làm thế nào để thay đổi các thông số hành động và làm cho nó hoạt động mà không thay đổi định tuyến trong asp.net MVC?
- 27. Việc bỏ phiếu cho một tệp để thay đổi hoạt động như thế nào?
- 28. Laravel Elixir: Làm thế nào để rút gọn tệp?
- 29. Sự thay đổi để tham khảo các biến trong C++
- 30. Làm cách nào để thay đổi liên kết tệp cho các tệp .py Python trong XP?
$ cũ có thể không xác định – sgotre