OneDrive 配下のフォルダは PHP から見えない

 不思議な現象ですが、画面に「No Input file specified.」と表示されます。

何がおこっているのかわからなかったので、SysInternals の Procmon.exe で PHP を追ってみました。SysInternals は Windows 周りのトラブルシューティングに役立つツールがそろっています。Procmon はプログラムがどのファイル、レジストリ、ネットワークにアクセスしているかをリストアップしてくれます。膨大なログが出るので、フィルターをどれだけ上手に設定できるかがコツです。


ファイルアクセスがうまくいかなかった場合は「ACCESS DENIED」などと出てくるはずでした。ところが、今回は、エラーなログが出てきませんでした。

手掛かりがなくなったので、いろいろ試してみるしかありません。

ここで気づいたのが、特定ディレクトリ以下で見えなくなる法則性です。

自分の開発環境は、バックアップの意味を踏まえて以下のようにしてあります。

C:\sites\[案件名](.gitやworkフォルダ含む)\root(サイトルート)\
↓シンボリックリンク
~\OneDrive\sites\[サイト名]\

サイト内のファイルを更新したら、随時バックアップされていく仕組みです。

どうやら、OneDrive が関係してくると PHP から見えなくなるようでした。

回避手段としては、別の仕組みで OneDrive と同期をとるかです。

と思っていたら、PHP が修正されていました。以下であれば対応済だそうです。

  • PHP 7.4
  • PHP 7.3.10
  • PHP 7.2.23

ディスカッションスレッド:
https://bugs.php.net/bug.php?id=78220