Eu criaria um comando no arquivo sudoers e usaria sudo -u user-who-owns-svn-repo svn update
em seu script PHP.
As alterações em /etc/sudores
seriam semelhantes a:
Cmnd_Alias SVN = /usr/local/bin/svn
apache ALL=(ALL,!root,!#0) NOPASSWD: SVN
Consulte o manual do Sudoers para obter mais informações.
Se você quiser controles mais rígidos, faça scripts de shell que tenham os comandos SVN específicos e permita apenas o acesso do Apache a eles. Por exemplo:
Arquivo /path/to/my/project/update.sh
:
#!/bin/bash
svn update /path/to/my/project/svn-files
Arquivo /etc/sudores
:
Cmnd_Alias SVN = /path/to/my/project/update.sh
apache ALL=(ALL,!root,!#0) NOPASSWD: SVN
(e não se esqueça de chmod +x path/to/my/project/update.sh
)