0

我有一个 Apache 通过 DAV 提供的 SVN 存储库。

我创建了一个提交后挂钩,我想打开一个到服务器的 telnet 会话。

当我从命令提示符执行命令时,它工作正常。

但是当我用钩子执行它时,它失败了,说它没有执行权限。

我的脚本很简单:

 #!/bin/sh
 REPOS="$1"
 REV="$2"

 echo -e symeon\\nfrobnitz\\n.say \#foo easitag $REV $(svnlook author $REPOS -r $REV)    $(svnlook changed $REPOS -r $REV): $(svnlook log $REPOS -r $REV) | telnet server 8080

该挂钩在 RedHat Enterprise Linux 机器上运行。我假设它以 apache 用户身份执行。

有谁知道为什么?

4

2 回答 2

0

两点:

  1. 运行 Apache 的用户帐户(假设您使用 Apache 为存储库提供服务)必须有权执行您的脚本尝试执行的所有操作。
  2. 挂钩脚本在空环境中执行 - 没有设置环境变量,甚至$PATH. 因此,找不到您尝试执行的那些二进制文件 ( svnlook& )。telnet您需要指定它们的完整路径,或$PATH在脚本中设置 a 。
于 2013-05-19T02:36:59.297 回答
0

我在一个相当不起眼的论坛上发现了这个:

默认情况下不允许 apache 用户建立 http 连接。要启用此功能,请从 root 执行以下操作:

setsebool -P httpd_can_network_connect 1

这是在 http://forums.phpfreaks.com/topic/64806-solved-could-not-connect-to-server-permission-denied/上找到的

于 2013-05-19T09:24:21.887 回答