使用PHP的file_get_contents在cPanel中创建FTP帐户

时间:2012-05-27 20:04:32

标签: php curl ftp cpanel file-get-contents

我正在尝试在处理PHP表单时创建一个新的ftp帐户。如果我在浏览器的地址栏中输入此地址:

http://cpanel_username:cpanel_password@$mydomain.com:2082/json-api/cpanel?cpanel_jsonapi_version=2&cpanel_jsonapi_module=Ftp&cpanel_jsonapi_func=addftp&user=ftp_username&pass=ftp_password&homedir=/the/users/homefolder&quota=0

... json格式化结果显示在屏幕上,并按指定创建ftp帐户。但是,当我在PHP文件中使用它时,我无法让它工作!这就是我所拥有的:

$user = "cpanel_username";
$pass = "cpanel_password";
$domain = "mydomain.com";
$fuser = "ftp_username";
$fpass = "ftp_password";
$fhomedir = "/the/users/homefolder";

$url = "http://$user:$pass@$domain:2082/json-api/cpanel?cpanel_jsonapi_version=2&cpanel_jsonapi_module=Ftp&cpanel_jsonapi_func=addftp&user=$fuser&pass=$fpass&homedir=$fhomedir&quota=0";

file_get_contents($url);

我也尝试过使用CURL:

function new_get_file_contents($url) {
$ch = curl_init();
$timeout = 10; 
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch); 
curl_close($ch);
return $file_contents;
}

new_get_file_contents($url);

为什么我不能让它发挥作用的任何想法?

2 个答案:

答案 0 :(得分:0)

由于cURL无法访问cPanel会话/ cookie,因此可能无法正常工作。输入URL直接在Web浏览器中工作,因为浏览器在请求之间保留cPanel会话状态。解决此问题的唯一方法是首先使用cURL和HTTP POST请求登录cPanel。

像FireBug和Fiddler这样的工具可以帮助您查看HTML表单元素或确切的HTTP POST字段,包括登录时发送的HTTP标头。使用cURL模拟登录表单进程然后包含您的代码应该可以解决问题。

这可能有助于您继续前进:

答案 1 :(得分:0)

尝试并经过测试......

您需要输入变量

$cpaneluser = Your cpanel username
$cpanelpass = Your cpanel password
$domain = your domain name ( xyz.com )
$fuser = ftp username
$fpass = ftp password
$homedir = ftp directory 

$url = "http://$cpaneluser:$cpanelpass@$domain:2082/json-api/cpanel?";
$url .= "cpanel_jsonapi_version=2&cpanel_jsonapi_module=Ftp&cpanel_jsonapi_func=addftp&";
$url .= "user=$fuser&pass=$fpass&homedir=$fhomedir&quota=0";

var_dump($url);
$result = @file_get_contents($url);
if ($result === FALSE) 
die("ERROR: FTP Account not created. Please make sure you passed correct parameters.");
echo $result;
希望它有所帮助..