Добрый день! Я ударился о стену.
Я пытаюсь заставить PHP загрузить файл из папки на другом сервере и перепробовал так много методов и вариантов разрешений (IIS/PHP используют проверку подлинности Windows), но еще не нашел решения. Я так близко, что чувствую вкус.
Файлы находятся в папке на другом сервере, например. \\otherServer\my_photos
Чтобы получить к ним доступ, я создал символическую ссылку на сервере, на котором размещен сайт PHP, например.
C:\my_photos > \\otherServer\my_photos
Затем я выполняю различные тесты, чтобы определить, есть ли доступ к странице, например:
$path = 'C:\\my_photos';
$isReadable = is_readable($path);
var_dump($isReadable);
Приведенное выше возвращает TRUE
.
Однако, если я сделаю это:
$path = 'C:\\my_photos\photo_1.jpg';
$isReadable = is_readable($path);
var_dump($isReadable);
Он возвращает FALSE
.
Разрешения для файла photo_1.jpg
идентичны разрешениям для папки my_photos
, поэтому я подозреваю, что причина в чем-то другом, например, в каком-то ограничении безопасности, влияющем на доступ к файлам на других серверах, но у меня нет идей. Я вознагражу любую помощь виртуальной благодарностью и даже готов нарисовать вам картинку с личным сообщением.
ОБНОВЛЕНИЕ: если мы выключим аутентификацию Windows и включим анонимную аутентификацию (работающую под ApplicationPoolIdentity), она будет работать, что, по-видимому, предполагает, что а) это не какая-то запутанная проблема межсерверной безопасности и б) проблема может больше относятся к тому, как PHP/fastCGI выдает себя за пользователей Windows. Вернемся к аутентификации Windows и продолжим тестирование!