在使用 cpanel 管理的基于 Linux 的共享主机上,如果我知道我的 cpanel 登录信息和/或 FTP 信息,是否有一种编程方式可以为我的站点创建某种可靠的插件域?
注意:本例对 PHP 和 cpanel 感兴趣。
在使用 cpanel 管理的基于 Linux 的共享主机上,如果我知道我的 cpanel 登录信息和/或 FTP 信息,是否有一种编程方式可以为我的站点创建某种可靠的插件域?
注意:本例对 PHP 和 cpanel 感兴趣。
感谢@Alex C,他让我走上了正确的道路。以下内容适用于许多共享托管计划,但您需要先查看他们的政策。
在下面的示例中,我已经购买了 root.com 作为我共享主机计划的主要根域。然后,我希望添加一个名为 addon.com 的域。我将用户名设置为 addon_user 并将 pass 设置为 addon_pass。同样,我将新域的文件放在 public_html/addon.com 中。为了连接到 Cpanel 以实现这一点,我输入了一个 cpanel 主页 URL(随托管计划而异),以便可以对其进行解析和重用。另外,我提供了 root.com 的 cpanel 用户/密码信息作为 root_user 和 root_pass。
最后一个 echo 语句只是输出响应,无论它是否有效。但是,如果您想解析它是否失败,您可能可以解析“未添加”这个短语。
请注意,某些托管计划会阻止 file_get_contents 连接到 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";
您可以使用 cPanel API,文档在这里。它不是那么容易阅读,如果你想用 PHP 来玩它们,你可以使用免费的 PHP 类(在幕后使用这些 API),有些在 cPanel 论坛上,有些在这里。
这取决于您的 DNS 服务器是否托管在您控制的某个地方,以及是否有 API 可以修改 DNS 条目(或者只是访问 DNS 服务器的配置本身)。我不是 cPanel 用户,但我倾向于“不”。
在您控制 DNS 服务系统的环境中,编写代码向您的 DNS 记录添加更多条目(尽管显然传播仍然需要时间)并将新站点放入sites-enabled
. 安全和安全地进行操作也可能非常困难,但你去吧。但我怀疑你通过 cPanel 有这种能力。
刚刚想到的是能够使用包罗万象的域(在您的 Apache 配置文件中有一个默认站点条目,所有未指定的子域都可能指向)并以编程方式确定应该从那里运行的站点,但这有很多负面影响我什至不建议查看它的方法。
我曾经用 fopen 来做这件事——我不记得确切的 URL,我也无法再访问 cPanel,但是如果你检查正在使用的 url,你应该能够做类似的事情
fopen("https://username:pass@domain.com:1084/cpanel/doaddparked.html?domain=domain.com", "r");
(您将不得不检查路径和端口,我不记得这些了) - 我上次在两年前的一个项目中这样做,我们的注册通过 cpanel 创建了电子邮件 - 从那时起他们可能已经改变了它,但我发现最简单的方法。当时,他们肯定是在处理 GET 数据而不是 POST,如果将其更改为 POST,您可能需要查看 CURL。