PHP gặp vấn đề trong việc xử lý các file / folder trên Windows có sử dụng tên chứa các ký tự không trong bảng chữ cái Latin (ví dụ: tiếng việt, tiếng trung, tiếng hàn…)

Tất cả các hàm như filemtime(), fopen() v.v… đều báo lỗi nếu xử lý đến các file này (Python 2.7 cũng tương tự, lên bản 3 đã được giải quyết). Sau khi thử rất nhiều thư viện và hướng dẫn trên mạng, mình thấy cách tối ưu nhất để giải quyết vấn đề này là sử dụng extension kenjiuno/php-wfio

Để cài đặt:

Tải về version phù hợp với phiên bản PHP bạn đang sử dụng.

Tip: cách kiểm tra PHP đang là threat safe (TS) / non threat safe (NTS) bằng cmd sau:

  • On Windows : php -i|findstr "Thread"
  • On *nix: php -i|grep Thread

Chép dll tương ứng vào thư mục ext

Thêm vào php.ini dòng:

extension=php_wfio.dll

Để sử dụng:

Sử dụng hàm thư viện cung cấp sẵn:

Hoặc dùng stram wrapper:

 

Ảnh minh họa: Báo lỗi khi lấy thời gian của file có tên file chứa ký tự unicode

Sử dụng wfio để giải quyết:
01-02-16 11-10-07 AM
Các hướng dẫn xem thêm tại: https://github.com/kenjiuno/php-wfio