Puncte:3

Exclude settings from a contrib module on export

drapel 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.

drapel cn
Nu trebuie să vă încurcați cu exporturile aici, oricum cheia dvs. secretă nu ar trebui să fie niciodată în baza de cod.Utilizați în schimb o [config override](https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-override-system) în settings.php, mult mai simplu
Puncte:4
drapel cn

Nu trebuie să excludeți cheile API de la export; în schimb, le puteți seta în cod și apoi nu contează ce este exportat. (...probabil. Unele module nu vor funcționa cu această abordare.)

Puteți suprascrie configurația direct în setări.php.

Iată un exemplu cu modul Swiftmailer preluat de pe unul dintre site-urile mele.

swiftmailer.transport.yml

transport: smtp
smtp_host: smtp.example.com
smtp_port: 465
smtp_encryption: ssl
smtp_credential_provider: swiftmailer
smtp_credentials:
  swiftmailer:
    nume de utilizator: ''
    parola: ''
sendmail_path: /usr/sbin/sendmail
sendmail_mode: bs
spool_directory: ''
_nucleu:
  default_config_hash: RSNbRD3ekSaZoE19f3eHhm93gKOcD2PtmaAVmV3XMes
cod limba: ja

Acum vreau să folosesc o cheie API diferită pentru dev + producție. Deci, în setări.php, am setat manual configurația:

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

În cazul meu, folosesc un comutator pentru a detecta o variabilă de mediu (live, test, dev etc.) pentru că așa face gazda Pantheon, dar puteți face același lucru cu settings.local.dev.php fișiere.

Configurare în setări.php nu va fi niciodată exportat; drush îl va ignora. Cu toate acestea, Drupal va da întotdeauna prioritate setului de configurare în cod .yml fișiere. Ca urmare, dacă trebuie să modificați acest lucru, va trebui să actualizați codul în sine; nu veți mai putea face modificări din interfața de utilizare.

De asemenea, rețineți că este o potențială problemă de securitate să verificați cheile API în controlul versiunilor astfel.

The Modul de modificare a configurației adaugă un avertisment la ecranele de administrare care vă reamintește că suprascrieți valorile din cod.

Dacă securitatea este o problemă, există Lockr modul, care a fost creat special pentru a gestiona cazul de utilizare al jonglarii cheilor API, dar trebuie să plătiți pentru asta.

mt.i.1 avatar
drapel us
Acest lucru este complicat, deoarece clientul meu probabil va schimba cheia într-o zi sau alta (întrebarea mea este mai globală decât un singur modul de fapt), așa că în acest caz, nu cred că a face asta după cod este cea mai bună abordare. .. Dar dacă ajung să fac după cod, dacă înțeleg bine, trebuie să adaug acest `$config['recaptcha.settings']['site_key'] = "mycustomky";` în *settings.local. dev.php* ?
drapel cn
@mt.i.1 Da, pare corect.
mt.i.1 avatar
drapel us
Funcționează bine pe față, este posibil să „link” cheia în baza de date, astfel încât să apară în backend? Aceste câmpuri sunt obligatorii și nu pot trimite formularul pentru a salva celelalte setări
drapel cn
@mt.i.1 Puteți utiliza valoarea câmpului de producție sau o valoare a câmpului inactiv (o cheie API proastă care validează) pentru a vă permite să salvați configurația.
hotwebmatter avatar
drapel nr
Dacă nu doriți să salvați parolele și cheile API în configurația activă (unde vor fi exportate ca YAML și expuse în depozitul de cod în text simplu) sau într-un fișier de setări (expus și în depozitul de cod ca text simplu), puteți stocați aceste valori într-un fișier `secrets.php`, unic pentru mediu, care poate fi obținut din `settings.php` sau `settings.local.php`.
mt.i.1 avatar
drapel us
Da, am ajuns să fac așa ceva!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.