Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP exec()中的SVN用户奇怪之处_Php_Apache_Svn - Fatal编程技术网

PHP exec()中的SVN用户奇怪之处

PHP exec()中的SVN用户奇怪之处,php,apache,svn,Php,Apache,Svn,我正在运行通过exec()调用脚本的PHP代码。此脚本在未指定用户的情况下运行svn commit命令。运行此脚本(通过调用whoami验证)的用户(我们称他为NICK)在~/.subversion下拥有一个证书,该证书在~/.subversion/servers中使用ssl客户端证书文件选项指定。此证书文件附带了一个用户名(通过输出证书的内容可以看到) 当通过NICK的crontab上的cron作业调用此脚本时,提交的SVN作者与我前面提到的证书中的作者相同。但是,当通过PHP的exec()函

我正在运行通过exec()调用脚本的PHP代码。此脚本在未指定用户的情况下运行
svn commit
命令。运行此脚本(通过调用
whoami
验证)的用户(我们称他为NICK)在
~/.subversion
下拥有一个证书,该证书在
~/.subversion/servers
中使用
ssl客户端证书文件
选项指定。此证书文件附带了一个用户名(通过输出证书的内容可以看到)


当通过NICK的crontab上的cron作业调用此脚本时,提交的SVN作者与我前面提到的证书中的作者相同。但是,当通过PHP的exec()函数调用同一个脚本时,提交的作者是另一个用户。我一辈子都不明白为什么要使用另一个用户。我尝试过给commit命令提供
--username
选项,也尝试过使用
svn-propset-svn:author
但没有效果。有人知道为什么会这样吗?PHP/Apache是否使用不同的证书?任何关于正在发生什么或如何改变这种行为的信息都将不胜感激。

您是否尝试过在exec中使用sudo作为命令的前缀

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

Apache通常配置为以无人身份运行。如果您正在从浏览器调用脚本。它将以用户apache配置的方式运行。

刚刚运行,用户仍然与cron作业不同。为了确保我理解正确,您是通过PHP cli启动PHP脚本,还是通过apache、Nginx向,etc来触发脚本?您是否也可以在crontab中添加该行?PHP脚本正在通过Apache运行。你的意思是你想在crontab中看到这一行,还是我可以在crontab中添加一行?crontab行是我试图摆脱的东西;我不是在计时器上进行此提交,而是试图通过调用某个PHP函数来触发它。我的意思是在您的问题中添加crontab行。Apache用户与拥有crontab的用户相同:(关于php呢?您是否以fastcgi的形式运行它?它可以作为不同的用户运行。