我通過從php視圖文件中加載動態生成的html來創建電子郵件,但是當包含以下html代碼似乎執行兩次。
<table background="#000">
(我甚至不知道,如果background="#000"
屬性是有效的,但不應該在這方面重要)爲什麼打印某個字符串會導致代碼執行兩次?
下面是一個簡單的例子來說明這個問題。
$body = '<table background="#000">';
print $body;
$handle = fopen('error.log', 'a');
fwrite($handle, '########################'.date('Y-m-d H:i:s')."########################\n".$body."\n\n");
fclose($handle);
這將在日誌文件中生成2行文本(它應該只生成1)。
(我用a
作爲fopen
第二個參數,使得第二寫入附加該error.log
文件將不得不重新加載頁面之前手動刪除。)
如果print $body;
被註釋掉或然後刪除日誌文件只有1行寫入它。
如果我改變#000
任何非十六進制值(如紅色),或更改table
到別的(如DIV),或者如果我改變background
屬性爲任何其他日誌文件只有1線被寫入它。
我已經在運行PHP 5.6.12和5.5.9以及Apache 2.4.7和2.4.16的2個不同服務器上嘗試了這一點。
按我期望的那樣工作 –
我只是在第三臺服務器上嘗試了相同的代碼,得到了相同的結果。但是,我注意到在'background'屬性後面添加'style =「background:#000」'會導致它正常工作。 – nickradford
你期望一個日期,一個換行符,''table background =「#000」>'和每次執行2個換行符 - 正確嗎? –