Пароль был изменен и 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
даже не установлен! Я потратил время на просмотр вызываемой функции, поэтому без сброса всех 86 КБ вот очищенная версия $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:
Я никогда не сталкивался с таким хрупким кодом, хотя у меня нет выбора, кроме как использовать его. Некоторая помощь, пожалуйста?
Таким образом, версия 74 cPanel убила весь XML API и это не говорит вам ни с какими сообщениями об ошибках. Я не могу объективно сказать, что cPanel обеспечивает стабильную платформу для создания чего-либо надежного. Вы можете либо намеренно отключить ваш сервер от автоматического обновления (и, возможно, пропустить обновления безопасности), либо каждые X повторений времени полностью переписывать код снова … и снова … и снова.
Других решений пока нет …