PHP 具有 Windows 身份验证的计划任务
PHP Scheduled Task with Windows Authentication
我正在开发托管在 Windows Server 2008 上的 PHP 应用程序。抱歉,如果某些信息不清楚,但这项工作是由其他开发人员完成的,我无法联系他。
每周都会执行一个计划任务,以从另一台服务器上的 SQL 服务器数据库同步一些数据(我无权访问另一台服务器)。
计划任务运行是一个.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 身份验证,因为没有 login/password。
在计划任务属性中,选中以下选项:
- "Run whether user is logged on or not"
- "不存储密码。任务将只需要访问本地
计算机资源。
并且在"When running the task, use the following user account"中有当前账户。
我不明白为什么在命令行中 运行 运行 PHP 脚本而不是从计划任务中运行它。
你有什么想法吗?
提前致谢(如果我的英语不完美,请见谅^_^)
我解决了问题:
在任务属性中,选中了选项 "Do not store password"。没有这个选项,一切正常。
我正在开发托管在 Windows Server 2008 上的 PHP 应用程序。抱歉,如果某些信息不清楚,但这项工作是由其他开发人员完成的,我无法联系他。
每周都会执行一个计划任务,以从另一台服务器上的 SQL 服务器数据库同步一些数据(我无权访问另一台服务器)。
计划任务运行是一个.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 身份验证,因为没有 login/password。
在计划任务属性中,选中以下选项:
- "Run whether user is logged on or not"
- "不存储密码。任务将只需要访问本地 计算机资源。
并且在"When running the task, use the following user account"中有当前账户。
我不明白为什么在命令行中 运行 运行 PHP 脚本而不是从计划任务中运行它。
你有什么想法吗?
提前致谢(如果我的英语不完美,请见谅^_^)
我解决了问题:
在任务属性中,选中了选项 "Do not store password"。没有这个选项,一切正常。