У меня возникают странные проблемы с правами доступа к Perforce при запуске из сценария NAnt, но только если этот сценарий NAnt запускается из сценария PHP. Надеюсь, кто-то может просветить меня о том, что происходит!
У меня работает PHP-скрипт в пуле приложений, настроенный для использования учетной записи пользователя build.user. Сценарий в настоящее время выглядит так:
<?php
echo exec("whoami");
exec("c:\\windows\\system32\\cmd.exe /c d:\\nant\\bin\\Nant.exe -v /f:d:\\build\\test.build test.build.target > d:\\build\\test.build.log");
?>
При запуске в браузере он выплевывает domain\build.user
. Пока все хорошо.
Сценарий NAnt выглядит следующим образом:
<?xml version="1.0"?>
<project name="test" basedir=".">
<target name="test.build.target">
<echo message="Local appdata path: ${environment::get-folder-path('LocalApplicationData')}" />
<exec program="whoami.exe" />
<echo message="==========================================================================================" />
<exec program="c:\program files\perforce\p4.exe" failonerror="false">
<arg value="set" />
</exec>
<echo message="==========================================================================================" />
<exec program="c:\program files\perforce\p4.exe" failonerror="false">
<arg value="where" />
<arg value="//depot1/folder/file.ext" />
</exec>
</target>
</project>
И вывод соответствующего файла журнала:
[echo] Local appdata path: C:\Documents and Settings\Default User\Local Settings\Application Data
[exec] Starting 'whoami.exe ()' in 'd:\build'
[exec] domain\build.user
[echo] ==========================================================================================
[exec] Starting 'c:\program files\perforce\p4.exe (set)' in 'd:\build'
[exec] P4CLIENT=build_depot (set)
[exec] P4PASSWD=Password (set)
[exec] P4PORT=source01.domain.com:1666 (set)
[exec] P4USER=build.user (set)
[echo] ==========================================================================================
[exec] Starting 'c:\program files\perforce\p4.exe (where //depot1/folder/file.ext)' in 'd:\build'
[exec] Perforce password (P4PASSWD) invalid or unset.
[exec] d:\build\test.build(13,4):
[exec] External Program Failed: c:\program files\perforce\p4.exe (return code was 1)
Итак, два моих главных вопроса:
- Почему локальный путь к appdata - это путь "Default User" вместо пути "build.user", если WhoAmI сообщает build.user как текущего пользователя?
- Почему P4 отвечает, что P4PASSWD недействителен / не установлен, если он явно действителен и установлен?