ฉันจะเปิดใช้งานโหมดผู้พัฒนา / ดีบักได้อย่างไร


35

การติดตั้ง drupal 8 คอร์ (ใช้โพรไฟล์มาตรฐาน) เมื่อใดก็ตามที่ฉันได้รับข้อยกเว้น / ข้อผิดพลาดฉันได้รับหน้าว่างด้วย "เว็บไซต์พบข้อผิดพลาดโปรดลองอีกครั้งในภายหลัง" ข้อความ (ตามภาพด้านล่าง) และไม่มีรายละเอียด / ติดตามเกี่ยวกับข้อผิดพลาด

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


51

บนเว็บไซต์พัฒนาฉันขอแนะนำให้ยกเลิกการใส่เครื่องหมายความคิดเห็นบรรทัดต่อไปนี้ในsettings.phpไฟล์ emacs sites/default/settings.php

if (file_exists(__DIR__ . '/settings.local.php')) {
  include __DIR__ . '/settings.local.php';
}

จากนั้นคัดลอกไฟล์example.settings.local.phpจาก/sitesโฟลเดอร์ไปยัง/sites/defaultโฟลเดอร์และเปลี่ยนชื่อเป็นsettings.local.php

cp sites/example.settings.local.php sites/default/settings.local.php

นอกเหนือจากการเพิ่มการตั้งค่าต่อไปนี้

$config['system.logging']['error_level'] = 'verbose';

มันยังเพิ่มการตั้งค่าอื่น ๆ เล็กน้อยซึ่งจะช่วยคุณในการดีบักและทำให้การพัฒนาง่ายขึ้น หากคุณไม่ต้องการสิ่งใดเป็นพิเศษคุณสามารถแสดงความคิดเห็นได้ตลอดเวลา

หมายเหตุ: หากคุณคิดว่าการเพิ่มการfile_existsเรียกแต่ละหน้าจะทำให้ไซต์ช้าลงคุณสามารถลบออกได้ในรหัสการผลิต


หากคุณไม่มีไฟล์ตัวอย่างคุณสามารถสร้างไฟล์ที่มี<?php $config[...;
Danielle Madeley

1
ตามที่ระบุไว้ด้านล่างโมดูล Devel สามารถทำให้สิ่งต่าง ๆ ง่ายขึ้นสำหรับ Drupal 8 ตรวจสอบว่า $ config ['system.logging'] ['error_level'] = 'verbose'; ดูเหมือนว่าการตั้งค่าจะทำงาน
Darrell Ulm

ฉันสร้างคอนเทนเนอร์นักเทียบท่าที่มาพร้อมกับการตั้งค่าที่จำเป็นสำหรับการดีบักและไม่แคช - หวังว่ามันจะมีประโยชน์: hub.docker.com/r/feikede/drupal-dev
Rainer Feike


7

นี่คือตัวแปรที่มีค่าต่างกัน:

$config['system.logging']['error_level'] = 'all'; // hide|some|all|verbose

2
ขอขอบคุณที่เพิ่มค่าที่เป็นไปได้
plocks

ใช่ขอบคุณที่เพิ่มค่าที่เป็นไปได้ซึ่งหาได้ยากอย่างน่าประหลาดใจ
arnoldbird

7

ตัวเลือกที่ง่ายถ้าคุณมีการเข้าถึง Drupal คอนโซลที่จะช่วยให้การพัฒนา / สภาพแวดล้อมโดยใช้การแก้จุดบกพร่องdrupal site:mode dev; เมื่อคุณพร้อมที่จะเปลี่ยนกลับไปสู่การผลิต, drupal site:mode prodการใช้งาน


1
กลลวงดีกับ Drupal Console
ognockocaten

4

ในการรับข้อความแสดงข้อผิดพลาดพื้นฐานใน Drupal 8 คุณไม่จำเป็นต้องแตะรหัสใด ๆ เลย เพียงไปที่:

/ ธุรการ / config / พัฒนา / การเข้าสู่ระบบ

และตั้งค่า "Error Messages to Display" ให้อยู่ในระดับที่เหมาะสม

คุณยังสามารถดูข้อผิดพลาดล่าสุดของคุณผ่านอินเทอร์เฟซผู้ดูแลระบบ:

/ ธุรการ / รายงาน / dblog

ดังที่กล่าวไว้คำตอบอื่น ๆ เกี่ยวกับไฟล์การตั้งค่านั้นมีความเกี่ยวข้อง - คุณควรเห็นข้อผิดพลาดในไซต์การพัฒนาของคุณเท่านั้นไม่ใช่การผลิต

การเขียนทับวัตถุ / คีย์ $ config ใน settings.php จะไม่ถูกเขียนไปยังไดเรกทอรีการซิงค์เมื่อทำการส่งออกดังนั้นหาก settings.php ของคุณอยู่ใน. gitignore คุณสามารถใช้ระบบการกำหนดค่าเพื่อซิงค์ระหว่างโคลนของไซต์เดียวกันได้อย่างปลอดภัย .


0

คุณยังสามารถติดตั้งโมดูล kint Devel และ Devel kint(xyz)นี้จะช่วยให้คุณแก้ปัญหาโดยใช้


0

หากคุณมีสิทธิ์เข้าถึง Drush เท่านั้น (ไม่มีคอนโซล Drupal) และคุณกำลังทำงานบนเซิร์ฟเวอร์ระยะไกลคุณสามารถตั้งค่าคอนฟิกให้แสดงข้อผิดพลาดทั้งหมด:

drush MYSITE.MYENV config-set system.logging error_level all -y

สิ่งนี้มีประโยชน์หากคุณได้รับ WSOD บนเซิร์ฟเวอร์ระยะไกลและไม่สามารถแก้ไขปัญหาได้หากไม่มีข้อมูลเพิ่มเติม


สำหรับสถานการณ์ที่อธิบายฉันขอแนะนำอย่างยิ่งdrush sqlcแล้วตามด้วยSELECT * FROM watchdog ORDER BY wid DESC LIMIT 1เพื่อแสดงรายการสุดท้ายใน dblog
Gogowitsch

0

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

$config['system.logging']['error_level'] = 'verbose';

สำหรับการพัฒนาในท้องถิ่น Drupal 8 คุณควรเปิดใช้งานการรายงานข้อผิดพลาดข้อผิดพลาดในการแสดงผลและข้อผิดพลาดในการเริ่มต้นการแสดงผลเพื่อช่วยให้คุณสามารถแก้ไขข้อผิดพลาดและแก้ไขข้อผิดพลาดรันไทม์ที่สำคัญ

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการดีบัก TWIG และเปิดใช้งานการดีบักด้วย Drupal Console ในบล็อกโพสต์ด้านล่าง

https://www.drupixels.com/blog/enable-debug-mode-and-error-reporting-local-development-drupal-8


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.