คำถามติดแท็ก error-reporting

30
ฉันจะรับข้อผิดพลาดของ PHP ที่จะแสดงได้อย่างไร
ผมได้ตรวจสอบไฟล์ INI ของฉัน PHP ( php.ini) และมีการตั้งค่าและการรายงานข้อผิดพลาดคือdisplay_errors E_ALLฉันรีสตาร์ทเว็บเซิร์ฟเวอร์ Apache ของฉันแล้ว ฉันวางบรรทัดเหล่านี้ไว้ที่ด้านบนสุดของสคริปต์แล้วและมันก็ไม่ได้เกิดข้อผิดพลาดในการแยกวิเคราะห์แบบง่ายๆ ตัวอย่างเช่นผมประกาศตัวแปรด้วยและฉันจะไม่ปิดงบ"$" ";"แต่สคริปต์ของฉันทั้งหมดแสดงหน้าเปล่าเกี่ยวกับข้อผิดพลาดเหล่านี้ แต่ฉันต้องการเห็นข้อผิดพลาดจริง ๆในผลลัพธ์ของเบราว์เซอร์ error_reporting(E_ALL); ini_set('display_errors', 1); สิ่งที่ต้องทำคืออะไร?

12
ลบข้อความเตือนใน PHP
ฉันมีรหัส PHP เมื่อฉันเรียกใช้ข้อความเตือนจะปรากฏขึ้น ฉันจะลบ / ระงับ / เพิกเฉยข้อความเตือนเหล่านี้ได้อย่างไร

26
จะให้ผู้ใช้อ่านข้อความแสดงข้อผิดพลาดได้อย่างไร?
หากคุณตั้งโปรแกรมสำหรับผู้ชมที่ไม่มีความรู้ด้านเทคนิคคุณจะพบว่าตัวเองมีความเสี่ยงสูงที่ผู้ใช้จะไม่อ่านข้อความแสดงข้อผิดพลาดที่ได้รับการพูดอย่างถี่ถ้วน แต่เพียงคลิกที่ปุ่มแรกที่มีความหงุดหงิด ดังนั้นฉันสงสัยว่าวิธีปฏิบัติที่ดีที่คุณสามารถแนะนำเพื่อช่วยให้ผู้ใช้อ่านข้อความแสดงข้อผิดพลาดของคุณจริง ๆ คือแทนที่จะสละมันไว้ข้าง ๆ แนวคิดที่ฉันคิดได้จะตกไปตามสายของ: การจัดรูปแบบของหลักสูตรช่วย; อาจเป็นข้อความสั้น ๆ ง่ายๆพร้อมปุ่ม "เรียนรู้เพิ่มเติม" ที่นำไปสู่ข้อความแสดงข้อผิดพลาดที่ยาวและละเอียดมากขึ้น มีข้อความแสดงข้อผิดพลาดทั้งหมดเชื่อมโยงไปยังบางส่วนของคู่มือผู้ใช้ (ค่อนข้างยากที่จะบรรลุ) ไม่ต้องออกข้อความแสดงข้อผิดพลาดเพียงปฏิเสธที่จะทำงาน (วิธี "Apple" ที่ค่อนข้างจัดการกับการป้อนข้อมูลผู้ใช้) แก้ไข:ผู้ชมที่ฉันมีอยู่ในใจเป็นฐานผู้ใช้ที่ค่อนข้างกว้างซึ่งไม่ได้ใช้ซอฟต์แวร์บ่อยเกินไปและไม่ได้เป็นเชลย (เช่นไม่มีซอฟต์แวร์ภายใน บริษัท หรือชุมชนแคบ) รูปแบบทั่วไปของคำถามนี้ถูกถามในslashdotดังนั้นคุณอาจต้องการตรวจสอบคำตอบบางส่วน

1
mysqli_fetch_assoc () คาดว่าจะมีข้อผิดพลาดพารามิเตอร์ / เรียกไปยังฟังก์ชันสมาชิก bind_param () จะรับข้อผิดพลาด mysql จริงและแก้ไขได้อย่างไร?
ในสภาพแวดล้อมโลคัล / การพัฒนาของฉันคิวรี MySQLi ทำงานได้ดี อย่างไรก็ตามเมื่อฉันอัปโหลดในสภาพแวดล้อมการโฮสต์เว็บฉันได้รับข้อผิดพลาดนี้: ข้อผิดพลาดร้ายแรง: เรียกใช้ฟังก์ชันสมาชิก bind_param () บนวัตถุที่ไม่ใช่ใน ... นี่คือรหัส: global $mysqli; $stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?"); $stmt->bind_param('i', $cur_id); $stmt->execute(); $stmt->bind_result($uid, $desc); ในการตรวจสอบคำถามของฉันฉันพยายามดำเนินการค้นหาผ่านแผงควบคุม phpMyAdmin และผลลัพธ์ก็โอเค

11
วิธีหลีกเลี่ยง isset () และว่าง ()
ฉันมีแอปพลิเคชันรุ่นเก่าหลายตัวที่ส่งข้อความ "xyz is undefined" และ "undefined offset" จำนวนมากเมื่อทำงานในระดับข้อผิดพลาด E_NOTICE เนื่องจากการมีอยู่ของตัวแปรไม่ได้รับการตรวจสอบอย่างชัดเจนโดยใช้isset()และรวบรวม ฉันกำลังพิจารณาดำเนินการผ่านสิ่งเหล่านี้เพื่อให้เข้ากันได้กับ E_NOTICE เนื่องจากการแจ้งเตือนเกี่ยวกับตัวแปรที่ขาดหายไปหรือการชดเชยอาจเป็นตัวช่วยชีวิตได้อาจมีการปรับปรุงประสิทธิภาพเล็กน้อยที่จะได้รับและโดยรวมแล้วเป็นวิธีที่สะอาดกว่า แต่ผมไม่ชอบสิ่งที่ก่อให้เกิดหลายร้อยisset() empty()และarray_key_exists()s ไม่ให้รหัสของฉัน มันป่องอ่านได้น้อยลงโดยไม่ได้รับคุณค่าหรือความหมายอะไรเลย ฉันจะจัดโครงสร้างโค้ดของฉันโดยไม่มีการตรวจสอบตัวแปรมากเกินไปได้อย่างไรในขณะเดียวกันก็เข้ากันได้กับ E_NOTICE

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