cPanel停放域未返回数组



密码被更改,cPanel中断。修复了密码,但它仍然坏了!我必须在停放的域上进行迭代。我已经通过PuTTY验证了用户/密码组合是否正确。

<?php
include_once('cpanel_api_xml.php');
$domain = 'example.com';
$pass = '';//etc
$user = '';//etc
$xmlapi = new xmlapi('127.0.0.1');
$xmlapi->password_auth($user,$pass);
$domains_parked = $xmlapi->listparkeddomains($user);
foreach ($domains_parked as $k1=>$v1)
{
if ($v1->domain == $domain) {$return = true; break;}
}
?>

该代码生成以下错误:

为foreach((提供的参数无效

显然$domains_parked甚至没有设置!我花了一些时间查看被调用的函数,所以在不转储所有86KB的情况下,这里是$xmlapi->listparkeddomains:的清理版本

<?php
public function listparkeddomains($username, $domain = null)
{
$args = array();
if (!isset($username))
{
error_log("listparkeddomains requires that a user is passed to it");
return false;
}
if (isset($domain))
{
$args['regex'] = $domain;
return $this->api2_query($username, 'Park', 'listparkeddomains', $args);
}
return $this->api2_query($username, 'Park', 'listparkeddomains');
}
?>

我不知道他们把一个变量设置为第二个参数是怎么做的。我已经调用了这个函数,有和没有,并用一个简单的mail()测试了反应。

接下来,我尝试以更直接的方式调用API:

$xmlapi->api2_query($username, 'Park', 'listparkeddomains')

同样也不起作用。好吧,让我们尝试一些真正原始的输出测试:

echo "1:n";
print_r($xmlapi);
echo "2:n";
print_r($xmlapi->api2_query($user, 'Park', 'listparkeddomains'));
echo "3:n";
$domains_parked = $xmlapi->listparkeddomains($user);
print_r($domains_parked);
die();

输出以下内容:

1:xmlapi对象(

[debug:xmlapi:private] => 
[host:xmlapi:private] => 127.0.0.1
[port:xmlapi:private] => 4099
[protocol:xmlapi:private] => https
[output:xmlapi:private] => simplexml
[auth_type:xmlapi:private] => pass
[auth:xmlapi:private] => <pass>
[user:xmlapi:private] => <user>
[http_client:xmlapi:private] => curl ) 2: 3:

我从未遇到过如此脆弱的代码,尽管我别无选择,只能使用它。请提供一些帮助?

因此cPanel版本74杀死了整个XML API,并且它不会告诉您任何错误消息。我不能客观地说cPanel提供了一个稳定的平台来构建任何可靠的东西。您可以故意阻止服务器自动更新(并可能错过安全更新(,也可以每隔X次迭代就重新完全重写代码。。。再一次。。。再一次。

最新更新