2012-08-14 46 views
0

我正在运行通过exec()调用脚本的PHP代码。该脚本在没有指定用户的情况下运行svn commit命令。运行此脚本的用户(让我们称他为NICK)(通过致电whoami验证)具有~/.subversion下的证书,该证书在~/.subversion/servers中与ssl-client-cert-file选项一起指定。此证书文件具有附加的用户名(通过输出证书的内容like so可见)。来自PHP的SVN用户奇怪exec()

当通过NICK的crontab上的cron作业调用此脚本时,提交的SVN作者与前面提到的证书中的作者相同。但是,当通过PHP的exec()函数调用相同的脚本时,提交的作者是不同的用户。我不能为我的生活弄清楚为什么这个其他用户正在使用。我试着给出提交命令--username选项,我也试过使用svn propset svn:author无济于事。有谁知道为什么会出现这种情况? PHP/Apache使用不同的证书吗?任何有关正在发生的事情或如何改变这种行为的信息都将不胜感激。

回答

0

你有没有尝试在sudo中使用sudo前缀命令?

exec('sudo -u nick ./path/to/script'); 
+0

刚刚做了,用户仍然不同于cron作业。 – 2012-08-14 01:00:05

+0

为了确保我理解正确,您是通过php cli启动PHP脚本,还是通过Apache,Nginx等发出wget或curl请求来触发脚本? – Travis 2012-08-14 01:44:26

+0

你可以在你的crontab中添加这行吗? – Travis 2012-08-14 01:46:10

0

Apache通常配置为无人运行。如果您从浏览器调用脚本。它将在用户apache配置时运行。

+0

Apache用户与拥有crontab的用户相同。 :( – 2012-08-14 01:00:53

+0

那么php怎么样?你是否将它作为fastcgi运行?它可以作为一个不同的用户运行。 – iWantSimpleLife 2012-08-14 01:21:36