2010-03-11 45 views
7

Tôi có một kịch bản nhỏ mà im sử dụng để kiểm tra PHP mail(), như sau:PHP không hiển thị lỗi

<?php 
error_reporting(E_ALL); 
ini_set("display_errors",1); 

mail('[email protected]','test','test') or die('could not send') ; 

echo "Mail Sent"; 

?> 

Khi tôi chạy kịch bản này tôi nhận được không có đầu ra ở tất cả. Tôi không nhận được một lỗi, tôi không nhận được bất cứ điều gì lặp lại, tôi xem nguồn, không có gì.

Tôi đã thử rất nhiều biến thể khác nhau, nếu tôi lấy chức năng thư trong mã ở trên, nó sẽ hoạt động tốt.

Đây là một Windows tổ chức máy chủ vì vậy tôi đã không truy cập vào php.ini hoặc bất cứ điều gì

Nó có thể là một số cấu hình đó gây ra không có đầu ra khi gặp phải nó một lỗi?

+0

PS Tôi biết rằng hàm mail() có thể sẽ bị lỗi nếu sendmail_from không được đặt hoặc không được đưa ra trong tiêu đề im chỉ cố gắng hiểu tại sao các lỗi sẽ không xuất hiện – Tim

+0

Vâng, cuộc gọi 'mail' của bạn có lỗi cú pháp (' ' kiểm tra, 'phải có dấu nháy đơn phụ). Đó có thể là lý do cho chương trình chết ... PHP nên nói với bạn rằng, mặc dù, đó có lẽ là điểm của câu hỏi này. – cmptrgeekken

Trả lời

17

Theo hướng dẫn PHP Runtime Configuration:

Lưu ý: Mặc dùdisplay_errors có thể bộ trong thời gian chạy (với ini_set()), nó sẽ không có bất kỳ ảnh hưởng nào nếu tập lệnh có lỗi nghiêm trọng. Điều này là do hành động thời gian chạy mong muốn không nhận được được thực hiện.

Mã của bạn dường như có lỗi cú pháp ('test, thiếu dấu nháy đơn đóng). Vì vậy, chương trình của bạn đang gặp phải một lỗi nghiêm trọng. Các chỉ cách để có được một lỗi nghiêm trọng để hiển thị (EDIT: bên ngoài nhật ký lỗi) là đặt display_errors = 1 trong tệp php.ini của bạn.

1

Sự cố xảy ra với cấu hình máy chủ sendmail của bạn. Nếu bạn đang thử nghiệm kịch bản này trên môi trường phát triển cá nhân của bạn, đừng lo lắng về nó. Nó có thể là một pita để thiết lập/cấu hình một máy chủ sendmail. Nếu bạn gặp vấn đề này trên máy chủ sản xuất của bạn, giải pháp đơn giản nhất là sử dụng thư viện thư có tùy chọn smtp (cho phép email của bạn được gửi đến máy chủ SMTP bên ngoài để xử lý/phân phối).

Dưới đây là một hướng dẫn về việc sử dụng một kịch bản email bên smtp 3rd ... http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

Các vấn đề liên quan