2010-05-02 80 views
1

我正在写一些函数在PHP中使用exec()来询问一个svn。exec()函数不规则svn结帐

The commands exec("svn list ".$myurl) works. 

现在,我尝试使用checkout命令在svn存储库上获取路径。 当我直接在控制台中输入命令“svn checkout http://core.wordress.org/tags/2.9.2/最新版本”时,它可以正常工作。

但我执行exec(),这样做时,从一个PHP脚本:

exec("svn checkout ".$myurl, $dir) 

这是行不通的。

你有什么想法吗?

+0

检查您试图编写签出副本的权限? PHP脚本可能像shell一样运行,因此缺少写权限。 – Amber 2010-05-02 08:45:29

回答

0

这可能有多种原因。

  • 执行PHP的用户不允许写入你想看看到

  • 的SVN仓库目录需要未

  • 下缓存PHP运行在用户登录凭据
  • SVN签出过程开始,但需要一些额外的输入,如可怕的“你想接受此证书”与未签名的证书。

尝试增加2>&1到命令到stderr重定向到标准输出,并看看$dir。还可以使用$return_var参数exec()

正如Jacob指出的那样,总是使用escapeshellargs()作为您的命令参数。

+0

感谢您的回答。 我认为PHP用户不允许写入目录。 你知道如何解决它? – bahamut100 2010-05-02 09:16:14

+0

@bahamut如果您有权访问服务器,则可以更改目录权限。如果没有,您可以尝试在FTP客户端的目录中执行'chmod 777' - 只需注意这会使该目录对服务器上的每个人都可写。 – 2010-05-02 09:22:28

+0

我可以通过SSH访问服务器。 但是:什么是目录更改? – bahamut100 2010-05-02 09:26:05