【问题标题】:svn update with php and ssl用 php 和 ssl 更新 svn
【发布时间】:2011-06-11 23:18:31
【问题描述】:

我希望通过调用 PHP 脚本更轻松地进行 SVN 更新。

我创建了 PHP 脚本:

$cmd = "svn update  https://___/svn/website /var/www/html/website/ 2>&1";
exec($cmd, $out);

由于运行脚本的用户是 apache(不是 root),我得到了一些权限错误。

如果我将每个目录的所有者更改为 apache(或将所有内容更改为 777),我还有另一个问题。因为我使用 https 协议用户 apache 应该永久接受 svn 服务器的证书。我试图做“su - apache”并接受证书,但操作系统说“apache”不是有效用户。我也不知道如何接受带有 exec() 函数的证书。

有什么想法吗?如何让 svn 更新更容易?

【问题讨论】:

    标签: php linux svn ssl


    【解决方案1】:

    错误是否告诉您该用户不是有效的 svn 用户?如果 apache 是运行 httpd 的用户,你应该可以 su 到它。这是我使用的脚本:

    /usr/bin/svn --config-dir=/home/user/.subversion --username=svnuser --password=svnpass update
    

    保存密码后,您可以将其从命令中删除。再次确保上面的用户/通行证是有效的 SVN 用户。

    最近我实际上已经迁移到使用 Hudson 进行 svn 更新,因为您可以安排它以及手动运行并执行许多其他任务,此外您还可以查看每个提交的 svn 日志以及任何控制台错误。

    【讨论】:

    • 我为 apache 用户手动更改了 /etc/passwd 文件(将 /sbin/nologin 更改为 /bin/bash)。比我能够做“su - apache”并将证书存储在服务器上。然后唯一要做的就是使用 --config-dir 选项,如上面提到的 ldg .. 谢谢!
    【解决方案2】:

    为什么不使用php svn functions 而不是(不安全的)exec?

    http://www.php.net/manual/en/function.svn-auth-set-parameter.php 有很好的身份验证选项示例。

    【讨论】:

    • 我也会试试这个选项! Tnx
    • @stefgosselin 在执行svn_updatesvn_commit 等之后,您将如何显示遇到的错误消息?使用exec(),我在获取和准确显示出了什么问题时没有问题。有什么建议吗?
    • @nimph 不幸的是,您可能已经看到,svn_ 函数返回 rev。 number 成功,false 失败。我不知道您是否信教,这些功能将用于“相信” svn 非常强大。如果设置正确,它应该可以正常工作,只要您的脚本与服务器有正确的连接和正确的凭据。
    【解决方案3】:

    在 shell 上使用 getent apache。这将返回 apache 的 shell。最有可能的是 /bin/nologin 或 /bin/false。将其更改为 /bin/bash。您还需要指定主目录并在文件系统上创建它。

    更新: getent apache 实际上会为 apache 用户返回 /etc/passwd 文件中的条目。此字符串中的最后一个标记是外壳。

    【讨论】:

    • getent 什么也没返回。我为 apache 用户手动更改了 /etc/passwd 文件。
    • 我为 apache 用户手动更改了 /etc/passwd 文件(用于将 /sbin/nologin 更改为 /bin/bash)。如何指定主目录?现在我可以执行“su - apache”并通过 svn 进行更新,但即使我选择“永久保存证书”也不会存储证书..
    • 在手动和脚本中传递 --config-dir=/path/to/svnconfig 参数。
    • 我不知道 --config-dir 选项。我实际上会创建 /home/apache 并将其放在 /etc/passwd 文件中。但是 config-dir 选项肯定更好。
    猜你喜欢
    • 2013-06-27
    • 2013-03-03
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多