Я работаю над приложением PHP, размещенным на Windows Server 2008. Извините, если некоторая информация не ясна, но эта работа была сделана другим разработчиком, и я не могу связаться с ним.
Каждую неделю выполняется запланированное задание для синхронизации некоторых данных из базы данных SQL Server на другом сервере (у меня нет доступа к этому другому серверу).
Запланированное задание запускает файл .bat:
start C:\...\php.exe E:\...\synchro.php
Но скрипт не может подключиться к базе данных:
[Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
Когда я запускаю свой PHP-скрипт из командной строки, вот так:
php E:\...\synchro.php
… все работает.
В моем файле synchro.php соединение с базой данных сделано так:
$connectionInfo = array('Database'=> $database);
$conn = sqlsrv_connect($serverName, $connectionInfo);
Я думаю, что он использует проверку подлинности Windows, потому что нет логина / пароля.
В свойствах запланированной задачи отмечены следующие параметры:
А в «При запуске задачи используйте следующую учетную запись пользователя» есть текущая учетная запись.
Я не понимаю, почему он работает при запуске сценария PHP в командной строке, но не из запланированной задачи.
Есть ли у вас какие-либо идеи ?
Заранее спасибо (и извините, если мой английский не идеален ^ _ ^)
Я решил проблему:
В свойствах задач была отмечена опция «Не хранить пароль». Без этой опции все работает.
Других решений пока нет …