【问题标题】:PHP SVN Checkout via HTTPS通过 HTTPS 的 PHP SVN 结帐
【发布时间】:2013-08-14 07:15:37
【问题描述】:

我想创建一个 SVN 结帐 PHP 脚本。您只需调用一个函数并传递两个参数:SVN URL 和输出路径。

我的问题是,我们的 SVN 服务器只能通过 https 访问。但是通过https,该功能不起作用。通常该函数应该返回一个布尔值,但我什么也没得到。我的第一个想法是,我没有权限写入输出路径文件夹,但我将权限更改为 777(暂时)。还是不行。我还尝试从另一个 SVN 主干获取一些文件。看哪,这是有效的。我得到文件。知道如何让它工作吗?

啊,是的,我将 svn trunk 权限设置为每个人都可以读写。

这是我的代码:

<?php
    $result = svn_checkout('https://{LINK_TO_SVN_TRUNK}', dirname(__FILE__) . '/tmp');
    echo "Result: ".$result;
?>

【问题讨论】:

  • 您是否启用了错误报告?尝试将error_reporting(E_ALL);ini_set('display_errors', true); 放在你的脚本之上
  • 另外,你可能需要安装php的openssl扩展
  • @periklis 我收到此错误:Server certificate verification failed: certificate has expired, certificate issued for a different hostname, issuer is not trusted - 如何处理。我可以传递用户名和密码吗,因为我有一个可以访问中继的用户。
  • 这表示svn服务器的SSL证书不受自己服务器的信任。您需要在 Web 服务器中安装 SSL 证书。如果您需要进一步的帮助,请在 Google 上快速搜索如何执行此操作并回复
  • 还有其他可能吗,因为我改变了我的代码。我使用了函数svn_auth_set_paramter并设置了一些参数,比如用户名和密码。现在我有另一个错误:Warning: svn_log(): svn error(s) occured 175002 (RA layer request failed) OPTIONS of 'https://{URL_TO_SVN_TRUNK}': 200 OK (https://MAIN_URL}) in /{LOCAL_PATH_TO_PHP_SCRIPT} on line 10 bool(false)

标签: php svn https


【解决方案1】:

这是我过去成功使用的:

svn_auth_set_parameter(PHP_SVN_AUTH_PARAM_IGNORE_SSL_VERIFY_ERRORS, true);
svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_USERNAME, "username");
svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_PASSWORD, "password");
$changeLog = svn_log($path, $start_revision, $end_revision);

【讨论】:

  • 我也用过。 PHP_SVN_AUTH_PARAM_IGNORE_SLL_VERIFY_ERRORS设置为 true 并传递用户名和密码。
  • http://php.net/manual/en/function.svn-auth-set-parameter.php第一条评论中建议的解决方案怎么样?
  • 是的,做到了。连接到服务器并信任证书。还更新了注释中显示的代码。只是更改了网址、用户名和密码。
  • 你用的是哪个版本的php的svn?
  • 版本 1.6.2 - 哦.. 是的,这仅适用于 1.6 以下的 svn 客户端库..
【解决方案2】:

请确认扩展程序是否已启用。 php.ini 应包含extension=svn.so 或 php.d 文件夹应包含带有extension=svn.so 行的svn.ini。您可以在phpinfo();查看扩展名

【讨论】:

  • 使用误解了我。它适用于 http,但没有 https。
  • 好的。 var_dump(svn_checkout('https://{LINK_TO_SVN_TRUNK}', dirname(__FILE__) . '/tmp'));的输出是什么
  • "服务器证书验证失败:证书已过期,为不同的主机名颁发证书,颁发者不受信任" 嗯,我有一个用户名和密码可以通过浏览器访问这个 svn 中继。如何通过身份验证对其进行编码?
  • @Jigar 投反对票,因为您在发帖前并未真正阅读 OP 的问题
  • @periklis:好的@Sylnois:你可以参考svn_auth_set_parameter ( string $key , string $value )php.net/manual/en/function.svn-auth-set-parameter.php,这是预定义的常量列表(php.net/manual/en/svn.constants.php#svn.constants.auth),现在是实验性的。虽然你可以试试。 :)
猜你喜欢
  • 2023-03-10
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2012-07-31
相关资源
最近更新 更多