Plesk API中不寻常的HTTP标头

时间:2012-06-27 14:04:04

标签: php http curl plesk

documentation for the Plesk API *提供以下cURL函数。

function curlInit($host, $login, $password)

{

  $curl = curl_init();

  curl_setopt($curl, CURLOPT_URL, "https://{$host}:8443/enterprise/control/agent.php");

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  curl_setopt($curl, CURLOPT_POST,           true);

  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

  curl_setopt($curl, CURLOPT_HTTPHEADER,

         array("HTTP_AUTH_LOGIN: {$login}",

                "HTTP_AUTH_PASSWD: {$password}",

                "HTTP_PRETTY_PRINT: TRUE",

                "Content-Type: text/xml")

  );



  return $curl;
}

我有几个问题。

  1. 我从来没有在其他任何地方看到过带有下划线的HTTP标头。这是文档中的错误吗?

  2. 地球上的HTTP_PRETTY_PRINT是什么?搜索这个只是让我回到Plesk文档。我无法在其他任何地方看到它。

  3. 使用HTTP_AUTH_LOGINHTTP_AUTH_PASSWD代替CURLOPT_USERPWD有什么用?

  4. 顺便说一句,无论我尝试什么选项,我都会收到Plesk的以下回复。

    HTTP/1.1 404 Not Found
    X-UA-Compatible: IE=EmulateIE7
    Content-Type: text/html
    Content-Length: 345
    Date: Wed, 27 Jun 2012 14:58:15 GMT
    Server: sw-cp-server
    
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
     <head>
      <title>404 - Not Found</title>
     </head>
     <body>
      <h1>404 - Not Found</h1>
     </body>
    </html>
    

    * Parallels Plesk Panel 9.5 :: API RPC协议开发人员指南&gt;客户代码示例&gt; PHP客户端应用程序

2 个答案:

答案 0 :(得分:2)

  1. Plesk使用自己的标头。在自定义HTTP请求中,您可以添加任何有效标头。例如,一些网络服务器添加自己的标题,如'powered by:xxxx',所以没关系。
  2. 漂亮的XML输出需要漂亮的打印头。
  3. HTTP_AUTH_LOGIN标头包含面板用户登录名。 HTTP_AUTH_PASSWD标头包含面板用户密码。
  4. 不是必需的CURLOPT_USERPWD
  5. 尝试使用以下选项:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $packet);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1200); //wait 20min
    $response = curl_exec($ch);
    

答案 1 :(得分:2)

第4点:

404表示文件.../enterprise/control/agent.php已从服务器中删除。几个月前,许多人都在这样做,以便在补丁发布之前防止安全漏洞。我建议您检查/usr/local/psa/admin/logs/httpsd_access_log文件是否有错误以及/usr/local/psa/admin/htdocs/enterprise/control/agent.php

的可用性