【发布时间】:2011-02-09 05:18:32
【问题描述】:
我无法让 shell_exec ( 'svn up /var/www/mydirectory' ) 工作。出于某种原因,什么也没有发生。我很想认为这是一个权限问题,但不确定。我可以毫无问题地执行它:shell_exec ('svn help')
【问题讨论】:
标签: php svn shell-exec
我无法让 shell_exec ( 'svn up /var/www/mydirectory' ) 工作。出于某种原因,什么也没有发生。我很想认为这是一个权限问题,但不确定。我可以毫无问题地执行它:shell_exec ('svn help')
【问题讨论】:
标签: php svn shell-exec
这可能是因为文件权限问题。在大多数 PHP 配置中,/var/www/* 是 PHP 用户不可写的。 svn up /var/www/... 尝试写入此目录,而 svn help 不会。
/var/www/ 作为安全预防措施,PHP 用户不可写。使其可写会使您的网站更容易受到攻击,因为如果在您的 PHP 脚本中发现错误,那么攻击者更有可能完全控制您的服务器。 (因为他们可以在您的服务器上编写自己的 PHP 代码)
如果您的 /var/www/mydirectory 不包含任何需要执行的 PHP 代码,那么执行chmod -x+w mydirectory/ 应该是安全的。如果 mydirectory 包含确实需要执行的 PHP 代码,并且您已评估没有更安全的方法来执行此操作,请使用 chmod +w mydirectory/。
注意,我建议创建一个 cron 作业或使用其他方式以其他用户身份运行 svn up 操作,并将其对 PHP 进程保持只读状态。
【讨论】:
/var/www/*,这是正常的。我的意思是 PHP 用户,运行 PHP 的用户(在很多情况下是 Web 服务器用户)@Foo