php - 在 Windows 上从 PHP 更新 Subversion - 权限相关(访问被拒绝)

标签 php svn iis windows-server-2008

我编写了一个 PHP 脚本来更新 SVN 工作副本。

它在我的开发计算机(W2k3 服务器)上运行良好,但我无法让它在生产服务器(W2k8 服务器)上运行。我正在使用最新的 Collabnet Subversion 二进制文件 (1.6.17)。

这是 PHP 代码:

$command = 'svn update C:\inetpub\wwwroot\mysite --config-dir C:\Windows\Temp'; 

$response = array();
$handle = popen("$command 2>&1", 'r');
$read = '';
while( $read = fread( $handle, 20096 ) ) 
{
    $response[] = $read;
}
pclose( $handle );
flush();

echo '<h2>Command</h2><p> ' . $command . '</p>';
echo '<h2>Response</h2><p>' . implode( '<br />', $response ) . '</p>';

当我从命令提示符运行相同的命令时,它工作正常。但是当我通过 IIS 运行它时,我得到:

svn: Can't open file 'C:\inetpub\wwwroot\mysite.svn\lock': Access is denied.

大概我需要提升权限,但我不知道如何实现它。

我尝试让 _IUSR 帐户完全控制包含 svn 的文件夹和 C:\inetpub\wwwroot\mysite.svn\文件夹,但这没有什么区别。

谢谢

最佳答案

SVN 和 Windows Server 2008 也遇到过类似的问题。该问题是由 UAC 内容引起的,该内容通常会阻止某人更改不拥有该文件的文件。就 SVN 而言,问题通常是由一名用户执行初始 checkout ,创建 .svn 文件夹和相关位。然后,另一个用户访问 svn up 并遇到了有关修改 SVN 数据库文件的操作系统级访问问题。

不幸的是,我们能找到的最佳解决办法是禁用 UAC。实际上解决了其他一些问题,并且它在服务器上确实有意义。如果它作为计划任务运行,那么您可以尝试“以最高权限运行”,但提升这么多对于网络应用程序来说没有什么意义。

关于php - 在 Windows 上从 PHP 更新 Subversion - 权限相关(访问被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7611025/

相关文章:

php - 在这种情况下,我可以使用 @ 来避免无用的 isset() 吗?

linux - 复制在 2 个 SVN 版本之间更改的文件和文件夹

svn - 在 SVN 提交上触发 Hudson 构建

php - 无法让 PHP 在 IIS Web 服务器上运行

托管在 IIS6 上的 WCF

iis - 无法访问部署在本地 IIS Web 服务器上的 RESTFul WCF 服务上的 .svc

php - 仅在实时服务器上 VerifyCsrfToken.php 第 67 行中的 TokenMismatchException

php - 如何模拟对象属性?

php - WordPress 插件如何区分 WordPress

SVN获取日志中的代码更改