Je rencontre des problèmes d'autorisations étranges avec Perforce lors de l'exécution à partir d'un script NAnt - mais seulement si ce script NAnt est lancé à partir d'un script PHP. J'espère que quelqu'un pourra m'éclairer sur ce qui se passe!Problèmes d'exécution des commandes P4 de NAnt via l'application Web sur IIS 6
J'ai un script PHP exécuté dans un pool d'applications configuré pour utiliser le compte utilisateur "build.user". Le script ressemble actuellement à ceci:
<?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");
?>
Lorsqu'il est exécuté dans un navigateur, il crache sur domain\build.user
. Jusqu'ici tout va bien.
Le script NAnt ressemble à ceci:
<?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>
Et la sortie du fichier journal concerné:
[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)
donc mes deux questions principales sont:
- Pourquoi la AppData locale chemin le chemin "utilisateur par défaut" au lieu du chemin "build.user", étant donné que WhoAmI signale build.user en tant qu'utilisateur actuel?
- Pourquoi P4 répond-il que P4PASSWD est invalide/désactivé quand il est clairement valide et réglé?