我遇到了WAMP服務器設置(PHP版本5.3.0,Apache 2.2.11)上的一個奇怪的問題。當使用sprintf輸出一個數字時,我偶爾會在輸出字符串中得到錯誤的字符。在Windows中使用php和apache的sprintf錯誤?
實例:(而不是從任何修整,這是在腳本中的代碼)
$dt1 = new DateTime('now');
$dt2 = new DateTime('now - 10 min');
$interval = $dt1->diff($dt2);
$number = 10.0;
$string = sprintf("%.1f", $number);
echo "number: $number, string: $string\n";
如果我運行這個在用PHP CLI命令提示符下,我得到預期的輸出:
數:10,字符串:10.0
但是,如果我爲它服務使用Apache,在瀏覽器中,我得到
數:10,字符串::0.0
以冒號其中 '10' 應。 (請注意,「:」是在序列中的下ASCII字符後「9」,如果是$number
0-9,一切正常數大於10出現使用ASCII當量 - 所以圖11是「;」,12爲「<」。等)
最奇怪的是,前四行上述代碼示例中似乎影響的結果。從邏輯上講,這些陳述應該沒有影響,但如果我將它們評論或刪除,問題就會消失。
任何想法?任何人都可以複製這個?
注:
- 我試過PHP 5.3.1和5.3.2,雙方的行爲方式相同
- 以上腳本的正常工作,甚至在瀏覽器中,5-6頁面刷新重啓Apache之後。然後錯誤,如上所述,返回
是'error_reporting'打開?將其設置爲E_ALL,並檢查錯誤。 – ircmaxell 2010-06-08 20:43:09
是的,'error_reporting'和'display_errors'都打開了 - 什麼也沒有顯示 – potatoe 2010-06-08 20:55:39