PHP не может записывать файлы в IIS, используя Edge и Windows Authentication - PullRequest
0 голосов
/ 14 июня 2019

Я использую PHP через IIS для Windows и использую встроенную аутентификацию для пользователей домена.

Следующий код работает при доступе к странице в IE 11, Chrome и Firefox.

$dir = dirname(__FILE__);
$dir = realpath($dir.'/../storage/logs');

$filename = $dir.DIRECTORY_SEPARATOR.'my-log.log';
file_put_contents($filename, 'hello world');

При доступе в MS Edge

PHP Warning: file_put_contents(C:\websites\my-site\api\storage\logs\my-log.log): 
failed to open stream: Permission denied in 
C:\websites\my-site\api\public\permissions.php on line 11 

(работает в Edge-Dev на основе Chromium, это проблема только в традиционной версии / EdgeHTML, в которой есть проблема.)

Код работает и в Edge, если я отключаю аутентификацию Windows. Я знаю, что правильно набираю свой пароль, потому что в противном случае я получаю несанкционированное сообщение 401 от IIS.

Эта проблема не только моего компьютера; он провалился на всех 4 ноутбуках, на которых мы его пробовали. Но, похоже, не влияет на серверы, только на рабочий стол Windows.

Обновление

В соответствии с предложением Deepak-MSFT я добавил имя моего компьютера во внутреннюю сеть, но это ничего не изменило. Название похоже на laptop-4.example.com Я добавил его как с http-адресом, так и без него, а *.example.com уже был на доверенных сайтах, оставляя его или удаляя его, похоже, ничего не изменилось.

1 Ответ

0 голосов
/ 26 июня 2019

Похоже, что по какой-то причине Edge предпочитает иметь NTLM, прежде чем согласовать в списке. Не знаю почему, но это решило проблему. Я могу надежно вернуться к переговорам, чтобы снова вызвать проблемы, так что вполне вероятно, что причина.

Auth setting location

...