Как программно создать дополнительные домены на общих планах хостинга

На основанном на Linux общем хостинге, который администрируем с cpanel, там программный способ создать, отсортировать надежно, дополнительные домены для моего сайта, если я знаю свои cpanel данные для входа и/или информацию о FTP?

Примечание: заинтересованный PHP и cpanel в этом случае.

5
задан Volomike 10 July 2010 в 15:34
поделиться

4 ответа

Спасибо @Alex C, который направил меня на верный путь. Следующее будет работать со многими планами общего хостинга, но сначала вы захотите проверить их политику.

В приведенном ниже примере я бы уже купил root.com в качестве основного корневого домена моего плана общего хостинга. Тогда я бы хотел добавить домен под названием addon.com. Я установил имя пользователя на addon_user и переход на addon_pass. Также я поместил файлы для нового домена в public_html / addon.com. Чтобы подключиться к Cpanel, чтобы это произошло, я ввел URL-адрес домашней страницы cpanel (который зависит от плана хостинга), чтобы его можно было проанализировать и повторно использовать. Кроме того, я предоставил информацию о пользователе / ​​проходе cpanel моего root.com как 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";
10
ответ дан 18 December 2019 в 07:08
поделиться

Это зависит от того, размещен ли ваш DNS-сервер где-то под вашим контролем, и есть ли API для изменения записей DNS (или просто доступ к конфигурации самого DNS-сервера). Я не являюсь пользователем cPanel, но склоняюсь к мнению "нет".

В среде, где вы контролируете систему обслуживания DNS, довольно просто написать код для добавления дополнительных записей в ваши DNS-записи (хотя, очевидно, распространение все еще занимает время) и добавить новые сайты в sites-enabled. Это также может быть очень сложно сделать надежно и безопасно, но вот так. Но я сомневаюсь, что у вас есть такая возможность через cPanel.

Что-то, что только что пришло на ум, это возможность использовать catchall домены (иметь запись сайта по умолчанию в конфигурационных файлах Apache, на которую могут указывать все неопределенные поддомены) и программно определять, какой сайт должен запускаться оттуда, но у этого подхода так много отрицательных сторон, что я бы не рекомендовал даже смотреть на него.

3
ответ дан 18 December 2019 в 07:08
поделиться

Вы можете использовать cPanel API, документ здесь . Это не так просто читать, если вы хотите поиграть с ними с PHP, вы можете использовать бесплатные классы PHP (которые используют этот API за кулисами), некоторые из них здесь, на форуме cPanel , некоторые другие здесь .

7
ответ дан 18 December 2019 в 07:08
поделиться

Раньше я делал это с помощью fopen - я не могу вспомнить точные URL-адреса, и у меня больше нет доступа к cPanel, но если вы проверите используемые URL-адреса, вы сможете сделать что-то вроде

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

(вам нужно будет проверить пути и порты, я не могу их вспомнить) - и в последний раз я делал это в проекте два года назад, где наша подписка создавала электронные письма через cpanel - они, возможно, изменили его с тех пор, но я обнаружил, что самый простой способ. В то время они определенно работали с данными GET, а не с POST, если его изменить на POST, вам может потребоваться изучить CURL.

2
ответ дан 18 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: