當我使用功能error_log與$message_type = 1
- 通過電子郵件發送,我需要傳遞給sendmail的額外的參數"-f" . $sendermail
的error_log參數傳遞給發件人
有沒有我可以傳遞參數給發件人的方式,同樣的方式,因爲它可以用mail和$additional_parameters
完成?
文檔說
此消息類型使用相同的內部功能的郵件()一樣。
但我看不到快速的方式如何做到這一點。
當我使用功能error_log與$message_type = 1
- 通過電子郵件發送,我需要傳遞給sendmail的額外的參數"-f" . $sendermail
的error_log參數傳遞給發件人
有沒有我可以傳遞參數給發件人的方式,同樣的方式,因爲它可以用mail和$additional_parameters
完成?
文檔說
此消息類型使用相同的內部功能的郵件()一樣。
但我看不到快速的方式如何做到這一點。
就「快速」的方式來說,假設你是指傳遞額外的參數或類似的東西,那麼不會。看看在source code for error_log
,注意到,NULL
明確傳遞給參數問題的mail
功能:
if (!php_mail(opt, "PHP error_log message", message, headers, NULL)) {
除了使用set_error_handler
如其他人所說的,你可以嘗試使用運行時配置mail.force_extra_parameters
(see 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\""
您需要使用error_log_handler所看到http://php.net/manual/en/function.set-error-handler.php
mixed set_error_handler (callable $error_handler [, int $error_types = E_ALL | E_STRICT ])
設置功能的腳本來處理錯誤。我相信這是將函數添加到error_logs的標準方式。
基於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
,寫自己的錯誤處理。
我沒有嘗試error_log
與message_type 1,但我知道如何工作的mail
,所以我猜你一定要試試的東西如:
$headers = "From: $name <{$email}>\r\n".
"Reply-To: {$email}\r\n";
error_log('Foo', 1, '[email protected]', $headers);