如何以编程方式在共享主机方案上创建插件域

时间:2010-07-10 15:34:49

标签: php dns shared-hosting cpanel add-on

在使用cpanel管理的基于Linux的共享主机上,如果我知道我的cpanel登录信息和/或FTP信息,是否有一种编程方式可以为我的网站创建可靠的插件域?

注意:在这种情况下对PHP和cpanel感兴趣。

4 个答案:

答案 0 :(得分:10)

感谢@Alex C让我走上正轨。以下内容适用于许多共享主机方案,但您首先要查看其策略。

在下面的示例中,我已经购买了root.com作为我的共享主机方案的主要根域。然后,我希望添加一个名为addon.com的域名。我将用户名设置为addon_user,将pass设置为addon_pass。同样,我将新域的文件放在public_html / addon.com中。要连接到Cpanel以实现此目的,我输入了一个cpanel主页URL(随主机方案而变化),以便可以对其进行解析和重用。另外,我以root_user和root_pass提供了root.com的cpanel用户/传递信息。

最后一个echo语句只是输出响应,无论它是否有效。但是,如果要解析它失败,您可能会解析“未添加”这一短语。

请注意,某些托管计划会阻止连接到网址的file_get_contents,因此您可能需要使用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";

答案 1 :(得分:7)

您可以使用cPanel API,doc是here。 它不是那么容易阅读,如果你想用PHP玩它们你可以使用免费的PHP类(在幕后使用这些API),有些是here on cPanel forum,还有一些here

答案 2 :(得分:3)

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

在您控制DNS服务系统的环境中,编写代码以向DNS记录中添加更多条目(尽管显然传播仍然需要时间)并将新网站投入sites-enabled是相当简单的。安全和安全地做起来也很困难,但是你去了。但我怀疑你是否通过cPanel拥有这种能力。

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

答案 3 :(得分:2)

我以前用fopen做了这个 - 我记不清确切的URL了,我再也无法访问cPanel了,但如果你查看使用中的url,你应该可以做类似的事情

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

(你将不得不检查路径和端口,我不记得这些) - 我最后两年前在一个项目上做了这个,我们的注册通过cpanel创建了电子邮件 - 从那时起它们可能已经改变了,但是我发现最简单的方法。当时,他们肯定会使用GET数据而不是POST,如果将其更改为POST,则可能需要查看CURL。