Làm cách nào để tùy chỉnh settings.php trong khi cài đặt hồ sơ


9

Tôi đang tạo một hồ sơ cài đặt cho dự án nội bộ của công ty tôi.

Trong quá trình cài đặt, một trong các mô-đun tùy chỉnh gặp sự cố trong init()khi nó cố gắng sử dụng một biến toàn cục được xác định trên settings.php(đó là hành vi mặc định hiện tại của mô-đun)

Sử dụng system_form_install_settings_form_alter()Tôi đã thay đổi biểu mẫu cài đặt, bằng cách thêm một trường văn bản đầu vào cho đầu vào của người dùng và khi gửi giá trị được nối vào settings.php, nhưng settings.phpđược viết lại trước khi bắt đầu cài đặt hồ sơ.

Có cách nào để ngăn chặn dọn dẹp settings.phpbởi quá trình cài đặt?


1
Có lẽ sẽ dễ dàng hơn để vá mô-đun đang gặp sự cố và gửi thay đổi của bạn đến hàng đợi vấn đề cho dự án đó. Trước khi thay đổi của bạn được chấp nhận, bạn có thể thêm một tham chiếu đến bản vá của mình trong tệp tạo tệp cho hồ sơ cài đặt của bạn.
greg_1_anderson

Chào, cảm ơn cho câu trả lời của bạn. Đó là một mô-đun nội bộ tùy chỉnh (không phải là một mô-đun), nhưng vâng, tôi đã vá nó và giải quyết vấn đề.
Paulo Gomes

Đây có phải là một cái gì đó khi sử dụng tệp settings.local.php ghi đè tệp settings.php cũng có thể giúp ích?
beth

Liên kết này là sự giúp đỡ lớn đối với tôi previousnext.com.au/blog/...
Vic

Câu trả lời:


3

Bạn có thể thấy dễ dàng hơn khi sử dụng settings.common.php

Thông thường trong các dự án nhóm, chúng tôi có cục bộ settings.phpvới thông tin db, v.v. và một settings.common.phpcài đặt chung cho môi trường cài đặt và triển khai.

Bạn có thể thêm settings.common.phpvới một dòng bao gồm / yêu cầu trongsettings.php

require 'settings.common.php'; // same directory, e.g sites/default/settings.common.php

và sau đó viết thư cho nó khi cần thiết trong quá trình cài đặt.


3

Câu trả lời của tôi phụ thuộc vào máy chủ sử dụng Apache, nhưng tôi cho rằng bất kỳ máy chủ web nào khác cũng có thể thực hiện được điều này.

Trong cấu hình virtualhost của bạn, bạn có thể đặt tất cả các biến cho môi trường của mình:

SetEnv DBUSER datbase_user
SetEnv DBPASS database_pass
SetEnv DBNAME database_name
SetEnv DBHOST localhost

Và trong tập tin settings.php của bạn:

$databases = array (
   'default' => 
   array (
     'default' => 
     array (
       'database' => $_SERVER["DBNAME"],
       'username' => $_SERVER["DBUSER"],
       'password' => $_SERVER["DBPASS"],
       'host' => $_SERVER["DBHOST"],
       'port' => '',
       'driver' => 'mysql',
       'prefix' => '',
    ),
   ),
 );

Bạn có thể đặt bất kỳ biến nào khác theo cách này là tốt.

Nếu bạn lo lắng về mảng $ _SERVER rơi vào tay kẻ xấu, bạn có thể bỏ đặt tất cả các biến quan trọng ở cuối cài đặt.php:

unset($_SERVER["DBUSER"]);
unset($_SERVER["DBPASS"]);
unset($_SERVER["DBNAME"]);
unset($_SERVER["DBHOST"]);

Đây là cách chúng tôi làm điều đó tại văn phòng của tôi để di chuyển các trang web giữa các môi trường dev của chúng tôi, dàn dựng và thậm chí sản xuất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.