Điểm:3

Exclude settings from a contrib module on export

lá cờ us

I've two environment, dev and staging. I'm using the ReCaptcha module.

In the developpement environment, I have some api keys a other config which until now, are exported thanks to drush cex inside the recaptcha.settings file

site_key: mysite_key
secret_key: mysite_secret
verify_hostname: false
use_globally: false
widget:
  theme: dark
  type: image
  size: ''
  tabindex: 0
  noscript: false
_core:
  default_config_hash: mydefault_hash
langcode: fr

If I update my staging files website, the config from the development is imported with drush cim.

How can I, without another module, prevent this ?

In my settings.local.dev.php, I've added this line and ran drush cex :

$settings['config_exclude_modules'] = ['recaptcha'];

And it gave me this result

enter image description here

The config is completly deleted, but I'd like to keep all the config but not the site_key / secret_key (such as theme etc...)

I wish I could have a config for the development and the staging separetly, but still using drush commands.

lá cờ cn
Bạn không cần phải loay hoay với việc xuất ở đây, dù sao thì khóa bí mật của bạn sẽ không bao giờ có trong cơ sở mã.Thay vào đó, hãy sử dụng [ghi đè cấu hình](https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-override-system) trong settings.php, đơn giản hơn nhiều
Điểm:4
lá cờ cn

Bạn không cần loại trừ các khóa API khỏi quá trình xuất; thay vào đó, bạn có thể đặt chúng trong mã và sau đó những gì được xuất không thành vấn đề. (...có thể. Một số mô-đun sẽ không hoạt động với phương pháp này.)

Bạn có thể ghi đè cấu hình trực tiếp trong cài đặt.php.

Đây là một ví dụ với mô-đun Swiftmailer được lấy từ một trong các trang web của tôi.

swiftmailer.transport.yml

vận chuyển: smtp
smtp_host: smtp.example.com
smtp_port: 465
smtp_encryption: ssl
smtp_credential_provider: swiftmailer
smtp_credentials:
  người gửi thư nhanh:
    tên tài khoản: ''
    mật khẩu mở khóa: ''
sendmail_path: /usr/sbin/sendmail
sendmail_mode: bs
spool_directory: ''
_cốt lõi:
  default_config_hash: RSNbRD3ekSaZoE19f3eHhm93gKOcD2PtmaAVmV3XMes
mã ngôn ngữ: ja

Bây giờ tôi muốn sử dụng một khóa API khác để phát triển + sản ​​xuất. Vì vậy, trong cài đặt.php, tôi đặt cấu hình theo cách thủ công:

  $config['swiftmailer.transport']['smtp_credentials']['swiftmailer']['username'] = 'apikey';
  $config['swiftmailer.transport']['smtp_credentials']['swiftmailer']['password'] = 'ABCDEFGHIJKLMNOP'

Trong trường hợp của tôi, tôi đang sử dụng một công tắc để phát hiện một biến môi trường (trực tiếp, thử nghiệm, nhà phát triển, v.v.) vì đó là cách máy chủ Pantheon thực hiện, nhưng bạn có thể làm điều tương tự với cài đặt.local.dev.php các tập tin.

cấu hình trong cài đặt.php sẽ không bao giờ được xuất khẩu; drush sẽ bỏ qua nó. Tuy nhiên, Drupal sẽ luôn ưu tiên cấu hình được đặt trong mã hơn .yml các tập tin. Do đó, nếu bạn cần thay đổi điều này, bạn sẽ phải tự cập nhật mã; bạn sẽ không thể thực hiện các thay đổi từ giao diện người dùng nữa.

Cũng xin lưu ý rằng việc kiểm tra các khóa API trong kiểm soát phiên bản như thế này có thể là một vấn đề bảo mật.

Các Mô-đun ghi đè cấu hình thêm một cảnh báo vào màn hình quản trị để nhắc bạn rằng bạn đang ghi đè các giá trị trong mã.

Nếu an ninh là một mối quan tâm, có tủ khóa mô-đun, được xây dựng riêng để xử lý trường hợp sử dụng tung hứng các khóa API, nhưng bạn phải trả tiền cho điều đó.

mt.i.1 avatar
lá cờ us
Điều này thật phức tạp, bởi vì khách hàng của tôi có thể sẽ thay đổi khóa vào ngày này hay ngày khác (thực tế câu hỏi của tôi mang tính toàn cầu hơn là chỉ một mô-đun), vì vậy trong trường hợp này, tôi không nghĩ thực hiện bằng mã là cách tiếp cận tốt nhất. .. Nhưng nếu tôi kết thúc bằng cách thực hiện theo mã, nếu tôi hiểu rõ, tôi phải thêm cái này `$config['recaptcha.settings']['site_key'] = "mycustomky";` bên trong *settings.local. dev.php*?
lá cờ cn
@mt.i.1 Vâng, có vẻ chính xác.
mt.i.1 avatar
lá cờ us
Nó hoạt động tốt ở phía trước, có thể "liên kết" khóa trong cơ sở dữ liệu để nó xuất hiện trong phần phụ trợ không? Những trường đó là bắt buộc và tôi không thể gửi biểu mẫu để lưu các cài đặt khác
lá cờ cn
@mt.i.1 Bạn có thể sử dụng giá trị trường sản xuất hoặc giá trị trường giả (khóa API xác thực không hợp lệ) để cho phép bạn lưu cấu hình.
hotwebmatter avatar
lá cờ nr
Nếu bạn không muốn lưu mật khẩu và khóa API trong cấu hình đang hoạt động (nơi chúng sẽ được xuất dưới dạng YAML và được hiển thị trong kho lưu trữ mã dưới dạng văn bản gốc) hoặc trong tệp cài đặt (cũng được hiển thị trong kho lưu trữ mã dưới dạng văn bản thuần túy), bạn có thể lưu trữ các giá trị này trong tệp `secrets.php`, duy nhất cho mỗi môi trường, có thể lấy nguồn từ `settings.php` hoặc `settings.local.php`.
mt.i.1 avatar
lá cờ us
Vâng, tôi đã kết thúc bằng cách làm một cái gì đó như thế!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.