代码之家  ›  专栏  ›  技术社区  ›  Volomike nbk

如何在共享托管计划上以编程方式创建附加域

  •  5
  • Volomike nbk  · 技术社区  · 15 年前

    在使用cpanel管理的基于Linux的共享主机上,如果我知道我的cpanel登录信息和/或ftp信息,是否有一种程序化的方式为我的站点创建、某种可靠的加载域?

    注意:在本例中对PHP和CPanel感兴趣。

    4 回复  |  直到 15 年前
        1
  •  10
  •   Volomike nbk    15 年前

    感谢@alex c让我走上正轨。下面将与许多共享托管计划一起使用,但您首先要检查它们的策略。

    在下面的示例中,我已经购买了root.com作为我的共享托管计划的主要根域。然后,我希望添加一个名为add on.com的域。我将用户名设置为addon_user,将pass设置为addon_pass。此外,我还将新域的文件放在public_html/addon.com中。为了连接到CPanel来实现这一点,我输入了一个CPanel主页URL(它随托管计划的不同而变化),以便对其进行解析和重用。此外,我还提供了我的root.com的cpanel用户/通行证信息作为根用户和根用户通行证。

    最后一条echo语句只是输出响应,不管它是否工作。但是,如果您想分析它是否失败,您可能可以分析“not added”这个短语。

    注意一些托管计划阻止文件获取链接到URL的内容,因此您可能需要使用fopen($surl,'r')或curl api进行切换。

    <?php
    
    // @ input vars - change these as you see fit
    $sPastedCpanelHomepageURL = 'https://root.com:2083/frontend/x3/index.html';
    $sNewDomain = 'addon.com';
    $sNewDomainUser = 'addon_user';
    $sNewDomainPass = 'addon_pass';
    $sNewDomainFolder = 'public_html/addon.com';
    $sCPanelUser = 'root_user';
    $sCPanelPass = 'root_pass';
    
    // @ processing
    $sCP = dirname($sPastedCpanelHomepageURL);
    $sCP = str_replace('://','://' . $sCPanelUser . ':' . $sCPanelPass . '@',$sCP);
    
    $sTask = '/addon/doadddomain.html?';
    
    $sNewDomain = urlencode($sNewDomain);
    $sNewDomainUser = urlencode($sNewDomainUser);
    $sNewDomainPass = urlencode($sNewDomainPass);
    $sNewDomainFolder = urlencode($sNewDomainFolder);
    $sCPanelUser = urlencode($sCPanelUser);
    $sCPanelPass = urlencode($sCPanelPass);
    
    $asData = array(
      'domain' => $sNewDomain,
      'user' => $sNewDomainUser,
      'dir' => $sNewDomainFolder,
      'pass' => $sNewDomainPass,
      'pass2' => $sNewDomainPass
    );
    $sData = http_build_query($asData);
    
    $s = file_get_contents($sCP . $sTask . $sData);
    
    echo "$s\n";
    
        2
  •  7
  •   Marco Demaio    15 年前

    您可以使用CPanel API,Doc是 here . 这并不容易阅读,如果你想用PHP来玩它们,你可以使用免费的PHP类(在后台使用这些API),有些是 here on cPanel forum 其他一些 here .

        3
  •  3
  •   Ed Ropple    15 年前

    这取决于您的DNS服务器是否托管在您控制的某个地方,以及是否有API来修改DNS条目(或者只访问DNS服务器的配置本身)。我不是CPanel用户,但我会倾向于“不”。

    在控制DNS服务系统的环境中,编写代码以向DNS记录中添加更多条目(尽管显然传播仍然需要时间)并将新站点放入 sites-enabled . 安全和安全也很难做到,但你可以做到。但我怀疑你有能力通过电脑面板。

    刚想到的是,它能够使用catchall域(在Apache配置文件中有一个默认的站点条目,所有未指定的子域都可能指向该条目),并以编程的方式确定应该从那里运行哪个站点,但是这种方法有太多的缺点,我甚至不建议查看它。

        4
  •  2
  •   Alex C    15 年前

    我以前用fopen来做这个-我记不清确切的网址了,我再也没有访问cpanel的权限,但是如果你检查正在使用的网址,你应该可以做一些类似的事情

    fopen("https://username:pass@domain.com:1084/cpanel/doaddparked.html?domain=domain.com", "r");
    

    (你必须检查路径和端口,我记不起来了)-我上次在两年前的一个项目上这样做的时候,我们的注册通过cpanel创建了电子邮件-从那时起他们可能已经改变了它,但我发现这是最简单的方法。当时,他们肯定是在获取数据,而不是发帖,如果改成发帖,你可能需要研究一下卷曲度。

    推荐文章