2010-07-10 28 views
5

Trên máy chủ chia sẻ dựa trên Linux được quản lý với cPanel, có cách lập trình, phân loại các miền bổ trợ, đáng tin cậy cho trang web của tôi không nếu tôi biết thông tin đăng nhập cpanel của mình/hoặc thông tin FTP?Làm thế nào để lập trình Addon Domains trên Shared Hosting Plan

Lưu ý: quan tâm đến PHP và cPanel trong trường hợp này.

Trả lời

9

Nhờ @Alex C đã giúp tôi đi đúng hướng. Sau đây sẽ làm việc với nhiều kế hoạch lưu trữ được chia sẻ, nhưng bạn sẽ muốn kiểm tra với chính sách của họ về điều này trước tiên.

Trong ví dụ bên dưới, tôi đã mua root.com làm miền gốc chính của gói lưu trữ được chia sẻ của tôi. Sau đó, tôi đã có thể muốn thêm vào một tên miền được gọi là addon.com. Tôi thiết lập tên người dùng để addon_user và vượt qua để addon_pass. Đồng thời, tôi đã đặt các tệp cho miền mới trong public_html/addon.com. Để kết nối với Cpanel để thực hiện điều này, tôi đã nhập URL trang chủ cpanel (thay đổi theo gói lưu trữ) để có thể phân tích cú pháp và sử dụng lại. Ngoài ra, tôi cung cấp thông tin người dùng cpanel/pass của root.com của tôi là root_user và root_pass.

Câu lệnh echo cuối cùng chỉ là phản hồi đầu ra cho dù nó có hoạt động hay không. Tuy nhiên, nếu bạn muốn phân tích cú pháp lỗi đó, bạn có thể phân tích cú pháp cụm từ "không được thêm".

Lưu ý một số gói lưu trữ chặn file_get_contents kết nối với URL, vì vậy bạn có thể phải chuyển đổi với fopen ($ sURL, 'r') hoặc API Curl.

<?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"; 
+0

Vì vậy, cổng là năm 2083 và không phải là 1084 như Alex C gợi ý, chỉ để biết nguyên nhân tôi cũng quan tâm đến điều này. –

+0

Trên thực tế, đôi khi cổng được thay đổi bởi nhà cung cấp dịch vụ lưu trữ web, cũng như URL trang chủ cho cPanel. – Volomike

3

Tùy thuộc vào việc máy chủ DNS của bạn có được lưu trữ ở nơi bạn kiểm soát hay không và liệu API có sửa đổi các mục DNS hay chỉ truy cập vào cấu hình máy chủ DNS hay không. Tôi không phải là người dùng cPanel, nhưng tôi sẽ nghiêng về phía "không". Trong một môi trường nơi bạn kiểm soát hệ thống phân phối DNS, nó khá tầm thường để viết mã để thêm nhiều mục nhập vào bản ghi DNS của bạn (mặc dù việc truyền bá rõ ràng vẫn mất thời gian) và ném các trang mới vào sites-enabled. Nó cũng có thể rất khó để làm một cách an toàn và an toàn, nhưng có bạn đi. Nhưng tôi nghi ngờ bạn có khả năng đó thông qua cPanel. Một cái gì đó mà chỉ cần nhớ là có khả năng sử dụng các tên miền catchall (có một mục nhập trang web mặc định trong các tệp cấu hình Apache của bạn mà tất cả các tên miền phụ không xác định có thể trỏ tới) và lập trình xác định trang nào sẽ chạy từ đó, nhưng có nhiều tiêu cực cho phương pháp này mà tôi sẽ không khuyên bạn nên xem xét nó.

+0

+1 đây chính xác là điều tôi muốn nói. Trừ khi cPanel cung cấp một API, bạn không thể làm được gì nhiều. –

+0

@Ed Roople: Tôi không hiểu câu trả lời này có liên quan gì đến câu hỏi, gắn thẻ, anh ta hỏi cách thêm tên miền thông qua cPanel trên shared-hosting chứ không phải cách thêm tên miền trực tiếp trên DNS và Apache truy cập root máy chủ. –

+0

Tôi nghĩ bạn nên đọc nhận xét đầu tiên; nó trả lời khá rõ ràng. Trừ khi cPanel cung cấp một API, có rất ít điều có thể được thực hiện. Do đó, "nhưng tôi nghi ngờ bạn có khả năng đó thông qua cPanel." –

2

Tôi đã từng làm điều này với fopen - Tôi không thể nhớ chính xác URL và tôi không có quyền truy cập vào cPanel nữa, nhưng nếu bạn kiểm tra url đang sử dụng, bạn sẽ có thể làm điều gì đó như

fopen("https://username:[email protected]:1084/cpanel/doaddparked.html?domain=domain.com", "r"); 

(bạn sẽ phải kiểm tra đường dẫn và cổng, tôi không thể nhớ những điều này) - và lần cuối tôi thực hiện điều này trong một dự án cách đây hai năm, nơi đăng ký của chúng tôi tạo email qua cPanel - họ có thể đã thay đổi từ đó nhưng tôi thấy rằng cách dễ nhất. Vào thời điểm đó, họ chắc chắn đã làm việc trên dữ liệu GET thay vì POST, nếu nó được thay đổi thành POST, bạn có thể cần phải xem xét CURL.

+0

Điều này có thể hoạt động, nhưng nếu bạn chọn đi tuyến đường này, bạn cần phải * cực kỳ * cẩn thận rằng nhà cung cấp máy chủ chia sẻ của bạn có thể chấp nhận điều đó. Thành thật mà nói nếu bạn đang làm một cái gì đó phức tạp, đủ để cần điều này, bạn không nên được chia sẻ lưu trữ. –

7

Bạn có thể sử dụng API cPanel, doc là here. Không dễ đọc, nếu bạn muốn chơi với chúng bằng PHP, bạn có thể sử dụng các lớp PHP miễn phí (sử dụng các API sau hậu trường), một số là here on cPanel forum, một số khác là here.

Các vấn đề liên quan