發表文章

目前顯示的是 9月, 2010的文章

在FireFox內清dns cache

圖片
開發網站時,常會利用修改 hosts 的方式來控制要連到線上主機或者測試主機。但是,當我們修改 c:\windows\system32\drivers\etc\hosts (windows平台) 後,瀏覽器並不會馬上吃到修改後的設定。一般來講,都需要(關掉瀏覽器後)開新的瀏覽器,設定才會生效。 這樣的行為,有時還挺麻煩的…所幸,在FireFox下有Extensions可解決此狀況。讓我們不用重開瀏覽器,就可以吃到 hosts 內做的設定。 Clear Dns Cache DNS Flusher 上面兩套Extensions都可達到這項需求。我之前是採用 Clear Dns Cache ,最近才發現 DNS Flusher 。卻改用了 DNS Flusher 。 改換 DNS Flusher 的原因很簡單… 因為他在FireFox狀態列(右下角)會顯示我們所連結domain的IP,讓我很清楚的知道我目前到底是連到那個IP。 提一下 DNS Flusher 如何使用。他的使用方式非常簡單。當我們修改了hosts內的設定後,用滑鼠點一下狀態列上的IP,FireFox就會重新讀取 hosts 裡的設定。 另外,也可以調整設定。設定重新讀取 hosts 內的設定後,馬上重新載入頁面。

PHP 出現 canary mismatch on efree() - heap overflow detected

近來在使用新的php framework來開發,因此…遇到什麼問題,都會花點時間來確認問題發生的原因為何… 最近,遇到一個非常詭異的問題,當程式去ms sqlserver 2005上某個table撈取資料時,在某種情況下,居然會讓網頁出現白頁。詭異的是,居然也沒有任何錯誤訊息的出現…不過,之前用php4時,也曾撈過同樣的table,卻從沒發生過這樣的狀況。在沒有錯誤的提示下,浪費不少時間在找問題。 不經在想會不會是新採用的framework有問題?或是其他地方的問題?如php5或是 freetds?最後,只好分開測試…所幸,也確認了問題不在於framework上。 雖然最後找到了『閃避』問題的方式。採用convert去轉換原本是smalldatetime的欄位資料。但總覺得問題沒解決。忽然想到,這樣的狀況下,應該會在apache的log下留有紀錄吧? 查了一下,果然在apache的log中找到如下的錯誤訊息 [error] [client 192.168.1.1] ALERT - canary mismatch on efree() - heap overflow detected (attacker '192.168.1.1' , file '/my_test.php' ) 有了錯誤資訊後,就好查問題了。google之後,果然也找到正確的解決之法。 修改 php.ini 設定mssql.datetimeconvert = Off (這一行,原本是被mark的) 重新啟動 apache 以下則是節錄自php.ini中對於mssql.datetimeconvert的說明 ; Specify how datetime and datetim4 columns are returned ; On = > Returns data converted to SQL server settings ; Off = > Returns values as YYYY-MM-DD hh:mm:ss