mirror of
https://github.com/php/php-src.git
synced 2026-04-25 17:08:14 +02:00
81f52158b4
As of Windows 1903, when the OneDrive on-demand feature is enabled, the OneDrive folder is reported as reparse point by `FindFirstFile()`, but trying to get information about the reparse point using `DeviceIoControl()` fails with `ERROR_NOT_A_REPARSE_POINT`. We work around this problem by falling back to `GetFileInformationByHandle()` if that happens, but only if the reparse point is reported as cloud reparse point, and only if PHP is running on Windows 1903 or later. The patch has been developed in collaboration with ab@php.net. We should keep an eye on the somewhat quirky OneDrive behavior, since it might change again in a future Windows release.
17 lines
391 B
PHP
17 lines
391 B
PHP
--TEST--
|
|
Bug #78220 (Can't access OneDrive folder)
|
|
--SKIPIF--
|
|
<?php
|
|
if (substr(PHP_OS, 0, 3) != 'WIN') die("skip this test is for Windows platforms only");
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
$onedrive_dirs = array_unique([getenv('OneDrive'), getenv('OneDriveCommercial')]);
|
|
foreach ($onedrive_dirs as $dir) {
|
|
if ($dir && scandir($dir) === FALSE) {
|
|
echo "can't scan $dir\n";
|
|
}
|
|
}
|
|
?>
|
|
--EXPECT--
|