1

そのため、作成したスクリプトを使用して関数 Cron::add_line を実行しようとしましたが、まだ正しく動作しませんでした。スクリプトは cPanel にログインしますが、2 番目の部分では関数 add_line を実行するために json-api を実行しません。これについて多くの検索を行いましたが、cURL での動作を理解できるものは見つかりませんでした。

ブラウザにコマンド URL を入力すると、機能して cron が作成されます。それ以外の場合、スクリプトを使用しても機能しません。

誰かが私を助けることができれば、私は感謝します!

ありがとう!

コード:

<?php
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$site = 'https://' . $_REQUEST['site'] . ':2083';
$auth_url = $site . '/login/?';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $auth_url);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'user=' . $username . '&pass=' . $password);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100020);
$result = curl_exec($ch);
$h = curl_getinfo($ch);

if ($result == true && strpos($h['url'], "cpsess"))
{
    $pattern = "/.*?(\/cpsess.*?)\/.*?/is";
    $preg_res = preg_match($pattern, $h['url'], $cpsess);
}

$cpcmd_url = $site . "$ENV{'" . $cpsess[1] . "'}" . '/json-api/';
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $cpcmd_url);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'cpanel?user=$username&cpanel_jsonapi_module=Cron&cpanel_jsonapi_func=add_line&cpanel_jsonapi_version=2&command=GET http://www.cdihost.com.br/admin/cron.php&day=*&hour=*&minute=*/5&month=*&weekday=*');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100020);
$result = curl_exec($ch);
curl_close($ch);
?>
4

1 に答える 1

0

error_log($cpcmd_url);URL が正しいかどうかを確認するなど、デバッグを試してください。また、CURLOPT_POSTFIELDScpanel ? 私には間違っているようです。

于 2013-06-05T18:33:00.360 に答える