2016-05-24 58 views
5

當我使用功能error_log$message_type = 1 - 通過電子郵件發送,我需要傳遞給sendmail的額外的參數"-f" . $sendermail的error_log參數傳遞給發件人

有沒有我可以傳遞參數給發件人的方式,同樣的方式,因爲它可以用mail$additional_parameters完成?

文檔說

此消息類型使用相同的內部功能的郵件()一樣。

但我看不到快速的方式如何做到這一點。

回答

2

就「快速」的方式來說,假設你是指傳遞額外的參數或類似的東西,那麼不會。看看在source code for error_log,注意到,NULL明確傳遞給參數問題的mail功能:

if (!php_mail(opt, "PHP error_log message", message, headers, NULL)) { 

除了使用set_error_handler如其他人所說的,你可以嘗試使用運行時配置mail.force_extra_parameterssee docs) 。

強制添加指定參數作爲額外參數傳遞給sendmail二進制文件。這些參數將始終將第5個參數的值替換爲mail(),即使在安全模式下也是如此。

我已經使用過這個,其中的警告在其他地方覆蓋選項,所以你可能不得不考慮它是否對你有益。例如,這是我在一個.conf使用包括我的Apache開發服務器上:

# force envelope sender and name and in turn ignore any passed in to PHP mail() function 
php_admin_value mail.force_extra_parameters "-f [email protected] -F \"Development: leonard\"" 
1

基於PHP源代碼,error_log函數調用php_mail併爲此參數發送NULL值。

case 1:  /*send an email */ 
     if (!php_mail(opt, "PHP error_log message", message, headers, NULL)) { 
      return FAILURE; 
     } 
     break; 

(來源:php-src/ext/standard/basic_functions.c

你必須堅持到set_error_handler,寫自己的錯誤處理。

1

我沒有嘗試error_log與message_type 1,但我知道如何工作的mail,所以我猜你一定要試試的東西如:

$headers = "From: $name <{$email}>\r\n". 
      "Reply-To: {$email}\r\n"; 
error_log('Foo', 1, '[email protected]', $headers);