EVO Hosting
  • Economic Hosting
    • Extra Hosting
    • Extreme Hosting
    • Exclusive Hosting
  • Business Hosting
  • VPS Hosting
    • VPS Linux Hosting
    • VPS Windows Hosting
    • VPS SSD Linux Hosting
  • Domain
    • ตรวจสอบโดเมนเนม
    • โดเมนเนม สกุล .th
    • เอกสารสำหรับจดโดเมนเนม .th
    • เอกสารสำหรับย้ายโดเมนเนม .th
  • Co-Location
  • การแจ้งชำระเงิน
    • วิธีการชำระค่าบริการ
    • ชำระเงินผ่านระบบ LINE Pay
    • แจ้งชำระค่าบริการ
    • Contact US
Select Menu
  • Economic Hosting
    • Extra Hosting
    • Extreme Hosting
    • Exclusive Hosting
  • Business Hosting
  • VPS Hosting
    • VPS Linux Hosting
    • VPS Windows Hosting
    • VPS SSD Linux Hosting
  • Domain
    • ตรวจสอบโดเมนเนม
    • โดเมนเนม สกุล .th
    • เอกสารสำหรับจดโดเมนเนม .th
    • เอกสารสำหรับย้ายโดเมนเนม .th
  • Co-Location
  • การแจ้งชำระเงิน
    • วิธีการชำระค่าบริการ
    • ชำระเงินผ่านระบบ LINE Pay
    • แจ้งชำระค่าบริการ
    • Contact US

ยกเลิกการแสดง error ใน php

Make Difference Make It Easy
You are here:  Home › CMS › ยกเลิกการแสดง error ใน php

ยกเลิกการแสดง error ใน php

Jun 25th, 2013 In : CMS, เรื่องอื่น ๆ By : EVOHosting 0 Comments

เรามาทำการป้องกันเพื่อไม่ให้ PHP แสดง Error ออกมาเวลาที่ทำงานผิดพลาดกันดีกว่า

โดยปกติเวลาที่เราเขียนโปรแกรมโดยใช้ PHP เมื่อมีการทำงานผิดพลาดระบบจะแจ้งให้เราทราบว่ามี Error ที่บรรทัดใดอย่างไร ซึ่งมีประโยชน์มากเวลาเขียนโปรแกรม แต่ถ้าหากว่าข้อมูลของ Error ตัวนั้นไปแสดงที่หน้า Website ที่เรานำขึ้นไปใช้บนโฮสติ้งจริง ๆ คงไม่สนุกแน่ ๆ แล้วลองคิดดู หากว่า Hacker เห็น Error เหล่านี้ และอาจจะอาศัยช่องโหว่เหล่านี้ ในการเข้าโจมตีเว็บไซต์ของคุณ

บางท่านอาจจะคิดว่า เขียนโปรแกรมดีแล้วไม่มี Error แน่นอน เพราะทดสอบมาทุกขั้นตอนแล้ว

ในส่วนนี้ก็อาจจะเป็นไปได้ครับว่าคุณเขียนมาดีแล้ว แต่ถ้าหากว่าวันหนี่ง MySQL ที่ใช้งานอยู่ เกิดหยุดทำงานขึ้นมา คำสั่ง php ที่คุณใช้ในการ Connect MySQL จะต้อง Error ออกมาอย่างแน่นอน

ในการสั่งให้ PHP ไม่แสดง Error เวลาที่โปรแกรมทำงานผิดพลาดสามารถทำได้ 2 วิธีคือ

  1. สั่งไม่ให้แสดง Error เฉพาะตรงคำสั่งที่ต้องการ โดยการใช้ @
  2. สั่งไม่ให้แสดง Error ทั้งหมดไม่ว่าจะด้วยกรณีใด ๆ ทั้งสิ้น โดยการใช้ @ini_set(‘display_errors’, ’0′);

การสั่งไม่ให้แสดง Error เฉพาะตรงคำสั่งที่ต้องการ โดยการใช้ @

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

test.php
<?php
$file = "test.txt";
$handle = fopen($file, "r");
$contents = fread($handle, filesize($file));
fclose($handle);
print $contents;
?>

จากตัวอย่าง Script PHP เพื่ออ่าน File test.txt หากไม่พบ File ก็จะแสดง Error ออกมาดังนี้
Warning: fopen(test.txt) [function.fopen]: failed to open stream: No such file or directory in /home/admin/domains/maeklong.in.th/public_html/test/test.php on line 3
Warning: filesize() [function.filesize]: stat failed for test.txt in /home/admin/domains/maeklong.in.th/public_html/test/test.php on line 4
Warning: fread() expects parameter 1 to be resource, boolean given in /home/admin/domains/maeklong.in.th/public_html/test/test.php on line 4
Warning: fclose() expects parameter 1 to be resource, boolean given in /home/admin/domains/maeklong.in.th/public_html/test/test.php on line 5

จาก Error ที่เราเห็นก็จะทราบได้ว่า มีความผิดพลาดเกิดขึ้นจากทั้งหมด 4 function คือ fopen,filesize,fread,fclose ที่นี้เราก็จะมาใส่ @ ไว้ที่หน้า function เหล่านี้ดูบ้าง

test.php
<?php
$file = "test.txt";
$handle = @fopen($file, "r");
$contents = @fread($handle, @filesize($file));
@fclose($handle);
print $contents;
?>

จากตัวอย่างเวลาที่เรา Run โปรแกรม จะพบว่าไม่มี Error อะไร ขึ้นมาให้เราเห็นเลย

สั่งไม่ให้แสดง Error ทั้งหมดไม่ว่าจะด้วย กรณีใดๆทั้งสิ้น โดยการใช้ @ini_set(‘display_errors’, ’0′);

ในแบบที่ 2 เป็นวิธีการที่จะกำหนดไม่ให้แสดง Error ของทั้งหน้าไม่ว่าจะเป็นที่คำสั่งไหนก็ตาม วิธีนี้สะดวกตรงที่เราไม่ต้องไป นั้งใส่ @ ในทุกๆ function ที่เราต้องการ เพราะว่าเราแค่นำคำสั่ง @ini_set(‘display_errors’, ’0′); ไปไว้ที่บรรทัดแรกสุดของหน้า ที่เราไม่ต้องการให้แสดง Error ก็สามารถที่จะใช้ได้แล้ว ไปดูตัวอย่างกัน

test.php
<?php
@ini_set('display_errors', '0');
$file = "test.txt";
$handle = fopen($file, "r");
$contents = fread($handle, filesize($file));
fclose($handle);
print $contents;
?>

จากตัวอย่างถ้าหากว่าเราเปลี่ยนจาก @ini_set(‘display_errors’, ’0′); ให้เป็น @ini_set(‘display_errors’, ’1′); ก็จะเป็นการสั่งให้ แสดง Error ออกมาตามปกติ

คำแนะนำ : ใน ขณะที่เรากำลังทำการเขียนโปรแกรมอยู่ ก็ควรที่จะกำหนดให้มีการแสดง Error ออกมาตามปกติ เพราะจะได้ทำการแก้ไขได้ง่าย แต่เมื่อไรก็ตามที่ได้นำโปรแกรม นั้นขึ้นไปบน website ที่ใช้งานจริงๆ ก็ควรที่จะกำหนด @ini_set(‘display_errors’, ’0′); ไว้ด้วยเนื่องจากอาจจะมีความผิดพลาดที่ เราเองไม่ทราบล่วงหน้าก็ได้ อย่างเช่นมีการรับค่าตัวแปรเข้ามาผิด หรือว่าตัว Database MySQL หยุดทำงานเป็นต้น

ปฏิทิน

February 2019
S M T W T F S
« Sep    
 12
3456789
10111213141516
17181920212223
2425262728  

คลังความรู้

  • วิธีแก้ไขปัญหา Let’s Encrypt HTTP/1.1 400 Bad Request September 13, 2018
  • การตั้งค่า SSL ให้ Domain Name June 25, 2018
  • วิธีการ rewrite url http to https June 25, 2018
  • วงจรอายุโดเมน Domain Life Cycle June 4, 2018
  • แก้ไข letsencrypt does not match current agreement December 10, 2017
  • เพิ่มประสิทธิภาพให้ ClamAV Anti Malwere สำหรับ PHP December 10, 2017
  • วิธีการใช้งานโปรแกรม WinSCP November 8, 2016
  • วิธีเปลี่ยน Port Remote Desktop July 4, 2016
  • Upgrade clamav June 5, 2016
  • How to yum groupinstall June 5, 2016
  • วิธีแก้ไข หากขอ SSL Let’s encrypt แล้ว Error May 28, 2016
  • วิธีการติดตั้ง Let’s Encrypt automated free SSL certificate April 24, 2016
  • เมนูต่าง ๆ ของ User ใน DirectAdmin (DA) February 24, 2016
  • การขอใบรับรอง (SSL) ของ Let’s Encrypt February 22, 2016
  • การสร้างอีเมลแอคเค้าท์ January 20, 2016
  • การเพิ่มฐานข้อมูล ใน DirectAdmin January 13, 2016
  • การเปลี่ยนชื่อโดเมนเนม ในระบบ DirectAdmin January 13, 2016
  • เพิ่มโดเมนใหม่ ในระบบ DirectAdmin January 13, 2016
  • วิธีติดตั้ง mod_ruid2 November 20, 2014
  • การยืนยันตัวตน ของ ระบบ Domain Name July 23, 2014
  • วิธีติดตั้ง CSF Firewall on CentOS 6 + DirectAdmin July 11, 2014
  • วิธีติดตั้ง XCache บน Server November 19, 2013
  • 5 ขั้นตอน ติดตั้ง DirectAdmin October 9, 2013
  • ความแตกต่างระหว่าง Economic Hosting Plan กับ Business Hosting Plan July 3, 2013
  • 5 เหตุผลที่ไม่ควรใช้ Facebook แทน Website July 3, 2013

คลังความรู้

Extra Hosting

Extra Hosting 10
Extra Hosting 20
Extra Hosting 30
Extra Hosting 40
Extra Hosting 50

Extreme Hosting

Extreme Hosting 10
Extreme Hosting 20
Extreme Hosting 30
Extreme Hosting 40
Extreme Hosting 50

Exclusive_Hosting

Exclusive Hosting 10
Exclusive Hosting 20
Exclusive Hosting 30
Exclusive Hosting 40
Exclusive Hosting 50

Business Hosting

Prestige Hosting
Silver Hosting
Gold Hosting
Platinum Hosting
Diamond Hosting

VPS Hosting

TH VPS 10
TH VPS 20
TH VPS 30
TH VPS 40
TH VPS 50

Copyright © 2009 - 2018 EVOHosting.in.th Web Hosting All right reserved.
| ทะเบียนพาณิชย์ | IDC | Server Spec | Terms Of Service | Privacy Policy |
| EVO.in.th | evoHosting.in.th | evoVPS.in.th |