遇到問題需要關閉 調試一段PHP程式時遇到的三個問題
1,filesize()函數傳回錯誤的值。
使用curl將某個頁面下載到本機時,需要將下載到的暫存檔案tmpHtml.txt的內容讀取到一個緩衝區中。由於我使用fread()進行讀取,需要傳入要讀取的大小,所以先用filesize(‘./tmpHtml.txt')取得臨時檔案大小。怪異的是,取得到的臨時檔案大小不正確,下斷點調試,在filesize()呼叫後,手工去硬碟上尋找文件,檔案大小與filesize()得到的結果不一樣。
在php.net上搜尋filesize,可以看到函數說明中有這麼一句:Note: 此函數的結果會被快取。請參閱 clearstatcache() 以獲得更多細節。
再去查閱clearstatcache(),果然找到了原因:
PHP將快取這些(提供了函數表供查詢)函數的回傳資訊以提供更快的效能。然而在某些情況下,你可能想要清除被快取的資訊。例如如果在一個腳本中多次檢查同一個文件,而該文件在此腳本執行期間有被刪除或修改的危險時,你需要清除文件狀態快取。在這種情況下,可以用 clearstatcache() 函數來清除被 PHP 快取的該檔案資訊。
2,在UTF-8編碼的PHP腳本中,對GBK編碼的中文網頁內容做模式匹配時,如何匹配中文。
在昨天的開發中,需要匹配包含GBK編碼字串'蘋果'的內容,所以寫出如下代碼:
複製代碼 代碼如下:
$pat = '//';
$pat = iconv('UTF-8', 'GB2312', $pat);
$ret = preg_match_all($pat, $contents, $matches);
可是死活匹配不上,於是嘗試先將內容轉換成UTF-8編碼,如下:
複製代碼 代碼如下:
$pat = '//'conten
$pat = '//'conten
$ret = preg_match_all($pat, $contents, $matches);
於是就能匹配上了。但是想不通啊,懷疑這裡面有詐。
但悲劇的是,今天又用了第一種方法,又配對中了。看來問題出在別的地方。
啊!老夫是豬,問題2是由問題1引起的! filesize()取得的不對,自然匹配不上了!第二種方法匹配上,是在解決問題1之後!
3,瀏覽器中審查元素得到的報價圖片下載地址,為何與curl得到的下載地址不同。
可能…最後答案依然是:我是豬。
因為URI物件為:attachment.php? aid=Mzk3MTB8YTg5ZTYyNTJ8MTMyNjcyNDEwMXw5NWYydC9aOUE0a05EVm9ydlErSFBRamZJNWJQL1NHdWJLK3ZraU9GTDZYdnBUdw%3D%3D¬bWJLK3ZraU9GTDZYdnBUdw%3D%3D¬baidD%3D 呢?很可能是個與session有關的東東,變一變也很正常的嘛。後來抓看起來像靜態路徑的東東就沒問題了。
以上三個故事中包含兩個悲劇,這就是PHP初學者必犯的低級錯誤。以上就介紹了遇到問題需要關閉 調試一段PHP程式時遇到的三個問題,包括了遇到問題需要關閉方面的內容,希望對PHP教程有興趣的朋友有所幫助。
🎜 🎜
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...
