環境
- Windows 10 Professional 64bit (バージョン1709)
- Windows版PHP 7.2.2
問題
pathに「能」や「構」など、2バイト目が0x5Cである文字を含んでいると、chdir() などファイル操作系の関数に失敗する。調べてみたところ、「0x5C問題」とか「(Windowsの)ダメ文字」とか言われている、太古からある由緒正しい不具合だったらしい。
解決策
pathをSJISではなく、UTF-8で指定する。
PHP 7.1での修正により、UTF-8で渡してやれば問題なく操作できるようになっていた。
参考
- Windows版PHPでCSVが正しくパースされない問題に悩んだ (77 Dogs Blog)
- Windows版 PHP(7.1前) での日本語パスの対応状況と暫定回避策 (Qiita)
- Windows版 PHP 7.1 で日本語パス(パス文字列のエンコーディング)が対応されることによる影響 (Qiita)
- Windows版PHPで日本語ファイル名が正しく扱えない問題について (jBlog)
- PHP7.1で日本語ファイル名問題(5c問題)が解決へ (Blog)