2012-01-19 37 views
8

Tôi đang sử dụng PHP 5.3, CentOS 6.2, httpd 2.2.15, NetBeans 7.0.1 (chạy từ xa qua ftp).Dừng in thông báo lỗi php tới trình duyệt

Tôi muốn dừng in thông báo lỗi cho trình duyệt, nó đủ để in ra error_log của httpd.

Tôi nghĩ bằng cách thử/bắt tôi sẽ tự quyết định cách xử lý lỗi nhưng vẫn in cả error_log và trình duyệt.

function smic_gettext($phrase){ 

     try{ 
      $tr_text = $this->language_array[$phrase]; 

     } catch(Exception $e){ 
      error_log("Couldn't find any entry in the translation file for ".$phrase.". ".$e); 
      return $phrase; 

     } 

     return $tr_text; 
    } 

Tôi nên định cấu hình như thế nào để dừng hành vi này?

Tôi đã thử đặt display_errors = Off và display_errors = 0 trong php.ini. Không có sự khác biệt (tôi đã khởi động lại httpd).

+1

bộ 'display_errors = Off' – goat

+0

** môi trường sản xuất ** nên có lỗi PHP/thông báo vô hiệu hóa trong file 'php.ini', và chỉ khai thác gỗ để ghi lại các tệp – Jakub

+0

Lưu ý phụ: Các lỗi trong PHP không phải là ngoại lệ (như trong Java chẳng hạn) nhưng có một cách để chuyển đổi chúng thành các ngoại lệ và xử lý tương ứng. Xem http://www.php.net/manual/en/class.errorexception.php – Mchl

Trả lời

9
display_errors = Off 

trong php.ini sẽ cho phép bạn giữ lỗi syslog của bạn nhưng không viết gì cho trình duyệt.

+0

Tôi muốn làm điều này cho tất cả các kịch bản để cấu hình php.ini có vẻ là cách tốt nhất. Tôi đã thử display_error = Off và display_error = 0, khởi động lại httpd nhưng không có sự khác biệt. – Nicsoft

+0

Bạn đã thử "display_error", nhưng từ khóa là "display_errors" –

+0

Xin lỗi về điều đó, nó lãng phí chỉ là lỗi đánh máy trong nhận xét của tôi, tôi đã sử dụng display_errors. – Nicsoft

3

Hãy thử thêm dòng sau vào phía trên cùng của kịch bản của bạn:

ini_set('display_errors',0); 

này nên thiết lập các báo cáo lỗi không ai sánh kịp và ghi đè lên các máy chủ thiết lập php.ini (mà đôi khi bỏ qua error_reporting của bạn (0))

+0

error_reporting (0) sẽ vô hiệu hóa việc ghi nhật ký vào tệp cũng như – Mchl

+0

cài đặt error_reporting thành 0 cũng sẽ không gây ra lỗi nào để ghi nhật ký. Tôi sẽ không tư vấn điều này trong một môi trường sản xuất. Đặt 'ini_set ('display_errors', 0);' là đủ. – klennepette

+0

Mchl và klennepette, nhờ hỗ trợ. Nicsoft, chúng đúng, chỉ ini_set ('display_errors', 0); nên làm công việc. – AlexC

1
+0

Tôi muốn làm điều này cho tất cả các kịch bản để cấu hình php.ini có vẻ là cách tốt nhất. Tôi đã thử display_errors = Off và display_errors = 0, khởi động lại httpd nhưng không có sự khác biệt. – Nicsoft

+0

đó là 'display_errors' không phải' display_error' – Mchl

+0

Thực ra, đó là những gì tôi đã làm, cập nhật nhận xét của tôi. – Nicsoft

7

wheter hay không lỗi PHP được gửi đến trán ser được xác định bởi thiết lập php.ini: display_errors. Đặt nó thành Off để tránh đầu ra. Tệp này thường nằm dưới /etc/php.ini hoặc /etc/php5/php.ini

+0

@DaveRandom OP đã đề cập đến anh ấy đang ở trên CentOS và trên CentOS, đây thường là đường dẫn. – Oldskool

+0

Oh bạn nói đúng. Xin lỗi, xấu của tôi ... +1 :-) – DaveRandom

+0

Tôi muốn làm điều này cho tất cả các kịch bản để cấu hình php.ini có vẻ là cách tốt nhất. Tôi đã thử display_error = Off và display_error = 0, khởi động lại httpd nhưng không có sự khác biệt. – Nicsoft

3

Bạn cần thay đổi cài đặt php.ini display_errors thành off hoặc 0. Bạn có thể làm điều này trong php.ini thực tế của bạn, với một tập tin .htaccess, hoặc bằng cách gọi này vào đầu của kịch bản:

ini_set('display_errors', '0'); 
+0

Cảm ơn, điều này đã giúp ích rất nhiều. – JugglingBob

0

FWIW, trong khi display_errors = off là dòng config-tập tin chính xác như những người khác đã nói, trên DreamHost (nd có thể cài đặt khác), nó đi vào

$HOME/.php/phprc

chứ không phải là php .ini (cũng có thể hoạt động, nhưng DreamHost - và, một lần nữa, có thể là những người khác - hỗ trợ phprc).

1

Nếu lỗi chỉ xuất hiện trong một dòng, bạn có thể ngăn hiển thị lỗi bằng cách thêm dấu @ để bắt đầu dòng đó.

@YOUR_CUSTOM_COMMAND

Ví dụ:

@file_get_contents('custom_file.txt'); 
Các vấn đề liên quan