PHP :: readfile() và Output Buffering

trong danh mục PHP, Web Programming

Hôm nay được một đồng nghiệp report một cái bug thật kỳ quặc…hem biết bà con nào đã bị dính chưa. Số là cái source PHP của mình có một trang cho phép download 1 file bằng cách sử dụng hàm readfile($filename) để tải file về…Cái source lúc đưa ra chạy rất OK và không có trục trặc gì cả..

Cho đến hôm nay, đồng nghiệp này nói là không download được file và download bị lỗi, mình cũng thật ngạc nhiên, chạy vô source thì chẳng có gì thay đổi. Hơi ngạc nhiên, mình debug 1 xíu thì thấy vấn đề ở chỗ hàm readfile(). Sau một hồi điều tra trên http://php.net/readfile, thì thấy có một ghi chú là cái hàm này có trục trặc khi sử dụng kèm với Output Buffering.

Tới đây mình mới chợt nhớ ra là cách đây nửa tháng mình có triển khai nén sử dụng Output Buffering để tiết kiệm Bandwidth nên thành ra bây giờ nó bị bug này.

Cách giải quyết: cũng khá đơn giản, chỉ cần gọi hàm “ob_end_clean()” trước hàm “readfile()” là mọi việc OK.

Mình note lại đây, hi vọng có bạn nào gặp vấn đề tương tự sẽ biết cách giải quyết. Chúc vui.

2 bình luận

  1. hoangvu says:

    bài viết hay,
    cám ơn bạn có tin thần chia sẽ
    Chúc công việc luôn tốt!

    Regards,

    [Reply]

  2. Kiến Hâu says:

    Cảm ơn anh nhé, đang tìm hiểu về cái phần này!

    [Reply]

Gởi bình luận