Symfony1 在Windows 7中使用Rsync部署Symfony项目-权限问题

Symfony1 在Windows 7中使用Rsync部署Symfony项目-权限问题,symfony1,cygwin,rsync,cwrsync,Symfony1,Cygwin,Rsync,Cwrsync,我绝望地试图用Rsync部署我的Symfony应用程序 我安装了cwRsync,它在某种程度上可以工作,至少SSH可以。我的应用程序位于E:\xampp\htdocs\MyProject中 Rsync实际上在我的服务器上创建了一个目录,但除此之外,我只得到了权限错误 现在,这似乎是一个常见问题,但我无法实施任何解决方案,例如: 我已将cwRsync安装到以下目录:c:\cwRsync 我的问题是:我的fstab文件需要是什么样子,我甚至必须把它放在哪里?这个问题还有其他解决办法吗 提前谢谢 我

我绝望地试图用Rsync部署我的Symfony应用程序

我安装了cwRsync,它在某种程度上可以工作,至少SSH可以。我的应用程序位于E:\xampp\htdocs\MyProject中

Rsync实际上在我的服务器上创建了一个目录,但除此之外,我只得到了权限错误

现在,这似乎是一个常见问题,但我无法实施任何解决方案,例如:

我已将cwRsync安装到以下目录:c:\cwRsync

我的问题是:我的fstab文件需要是什么样子,我甚至必须把它放在哪里?这个问题还有其他解决办法吗


提前谢谢

我已经发布了你提到的那个问题。下面是我为使symfony
project:deploy
从Windows7开始工作所做的工作(它需要对symfony进行一点黑客攻击,因此它可能不是最理想的解决方案)。有了这个解决方案,您不需要安装完整的cygwin,只需要cwRsync

fstab
中,添加此行(fstab应位于
[cwrsync安装目录]\etc
下):

这实际上是将windows文件系统上的“C:\wamp\www”映射到cygwin的“/www”

修改
symfony/lib/task/sfProjectDeployTask.class.php

protected function execute($arguments = array(), $options = array())
{
  ...
  $dryRun = $options['go'] ? '' : '--dry-run';

  // -- start hack --
  if(isset($properties['src']))
    $src = $properties['src'];
  else
    $src = './';

  $command = "rsync $dryRun $parameters -e $ssh $src $user$host:$dir";
  // -- end hack --

  $this->getFilesystem()->execute($command, $options['trace'] ? array($this, 'logOutput') : null, array($this, 'logErrors'));

  $this->clearBuffers();
}
这允许您在
properties.ini
中指定额外的
src
字段:

src=/www/myProject
这样做可以更清楚地定义windows和cygwin之间的整个文件系统映射。Cygwin(和cwRsync)比windows路径(即
/www
C:/wamp/www
)更了解unix路径,因此这样做可以让一切正常工作。

运行脚本 我认为在Windows和Linux之间进行同步时,Rsync总是会破坏您的文件权限


您可以非常轻松地创建一个脚本,在同步后遍历您的文件,并使用chmod重置文件权限。

您提到的问题本质上是解决方案-只需在
C:\cwRsync\etc
中创建一个名为
fstab
的文件,然后添加行
none/cygdrive-cygdrive-binary,posix=0,user,noacl 0 0
src=/www/myProject