Score:3

Exclude settings from a contrib module on export

ธง 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.

cn flag
คุณไม่จำเป็นต้องวุ่นวายกับการเอ็กซ์พอร์ตที่นี่ คีย์ลับของคุณไม่ควรอยู่ในโค้ดเบสอยู่แล้วใช้ [config override](https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-override-system) ใน settings.php แทน ซึ่งง่ายกว่ามาก
Score:4
ธง cn

คุณไม่จำเป็นต้องยกเว้นคีย์ API จากการส่งออก คุณสามารถตั้งค่าเป็นรหัสแทนได้ จากนั้นไม่สำคัญว่าจะส่งออกอะไร (...อาจเป็นไปได้ บางโมดูลจะใช้ไม่ได้กับแนวทางนี้)

คุณสามารถแทนที่การกำหนดค่าได้โดยตรงใน การตั้งค่า.php.

นี่คือตัวอย่างของโมดูล Swiftmailer ที่นำมาจากหนึ่งในไซต์ของฉัน

swiftmailer.transport.yml

ขนส่ง: smtp
smtp_host: smtp.example.com
smtp_port: 465
smtp_encryption: ssl
smtp_credential_provider: swiftmailer
smtp_credentials:
  swiftmailer:
    ชื่อผู้ใช้: ''
    รหัสผ่าน: ''
sendmail_path: /usr/sbin/sendmail
sendmail_mode: บีเอส
spool_directory: ''
_core:
  default_config_hash: RSNbRD3ekSaZoE19f3eHhm93gKOcD2PtmaAVmV3XMes
รหัสภาษา: ja

ตอนนี้ฉันต้องการใช้คีย์ API อื่นสำหรับ dev + การผลิต ดังนั้นใน การตั้งค่า.phpฉันตั้งค่าด้วยตนเอง:

  $config['swiftmailer.transport']['smtp_credentials']['swiftmailer']['ชื่อผู้ใช้'] = 'apikey';
  $config['swiftmailer.transport']['smtp_credentials']['swiftmailer']['รหัสผ่าน'] = 'ABCDEFGHIJKLMNOP'

ในกรณีของฉัน ฉันใช้สวิตช์เพื่อตรวจจับตัวแปรสภาพแวดล้อม (สด ทดสอบ พัฒนา ฯลฯ) เพราะนั่นเป็นวิธีที่โฮสต์ Pantheon ทำ แต่คุณสามารถทำสิ่งเดียวกันกับ การตั้งค่า local.dev.php ไฟล์.

กำหนดค่าใน การตั้งค่า.php จะไม่ถูกส่งออก; drush จะไม่สนใจมัน อย่างไรก็ตาม Drupal จะจัดลำดับความสำคัญของการตั้งค่าในโค้ดก่อนเสมอ .yml ไฟล์. ดังนั้น หากคุณต้องการเปลี่ยนแปลงสิ่งนี้ คุณจะต้องอัปเดตโค้ดเอง คุณจะไม่สามารถทำการเปลี่ยนแปลงจาก UI ได้อีกต่อไป

โปรดทราบว่าการตรวจสอบคีย์ API ในการควบคุมเวอร์ชันเช่นนี้อาจเป็นปัญหาด้านความปลอดภัย

เดอะ กำหนดค่าโมดูลแทนที่ เพิ่มคำเตือนไปยังหน้าจอผู้ดูแลระบบที่เตือนคุณว่าคุณกำลังลบล้างค่าในโค้ด

หากกังวลเรื่องความปลอดภัย ล็อคเกอร์ โมดูลซึ่งสร้างขึ้นโดยเฉพาะเพื่อจัดการกับกรณีการใช้งานของคีย์ API ที่เล่นกล แต่คุณต้องจ่ายสำหรับสิ่งนั้น

mt.i.1 avatar
us flag
นี่เป็นเรื่องยุ่งยากเพราะลูกค้าของฉันอาจจะเปลี่ยนคีย์ไม่วันใดก็วันหนึ่ง (คำถามของฉันเป็นสากลมากกว่าโมดูลเดียวจริง ๆ ) ดังนั้นในกรณีนี้ฉันไม่คิดว่าการใช้รหัสเป็นวิธีที่ดีที่สุด .. แต่ถ้าผมลงเอยด้วยการทำโค้ด ถ้าผมเข้าใจดี ผมต้องเพิ่ม `$config['recaptcha.settings']['site_key'] = "mycustomky";` เข้าไปข้างใน *settings.local dev.php* ?
cn flag
@mt.i.1 ใช่ มันดูถูกต้อง
mt.i.1 avatar
us flag
ทำงานได้ดีที่ด้านหน้า เป็นไปได้หรือไม่ที่จะ "เชื่อมโยง" คีย์ในฐานข้อมูลเพื่อให้ปรากฏในแบ็กเอนด์ ต้องกรอกช่องเหล่านี้ และฉันไม่สามารถส่งแบบฟอร์มเพื่อบันทึกการตั้งค่าอื่นๆ ได้
cn flag
@mt.i.1 คุณสามารถใช้ค่าฟิลด์การผลิตหรือค่าฟิลด์จำลอง (คีย์ API ที่ไม่ถูกต้องซึ่งตรวจสอบความถูกต้อง) เพื่ออนุญาตให้คุณบันทึกการกำหนดค่า
hotwebmatter avatar
nr flag
หากคุณไม่ต้องการบันทึกรหัสผ่านและคีย์ API ในการกำหนดค่าที่ใช้งานอยู่ (ซึ่งจะถูกส่งออกเป็น YAML และเปิดเผยใน repo โค้ดในรูปแบบข้อความธรรมดา) หรือในไฟล์การตั้งค่า (แสดงใน repo โค้ดในรูปแบบข้อความล้วน) คุณสามารถทำได้ เก็บค่าเหล่านี้ไว้ในไฟล์ `secrets.php` ซึ่งไม่ซ้ำกันตามสภาพแวดล้อม ซึ่งสามารถมาจาก `settings.php` หรือ `settings.local.php`
mt.i.1 avatar
us flag
ใช่ ฉันลงเอยด้วยการทำอะไรแบบนั้น !

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา