【问题标题】:Plesk API and cURL doesnt workPlesk API 和 cURL 不起作用
【发布时间】:2012-11-03 09:44:41
【问题描述】:

我有一个使用 Plesk API 创建 FTP 帐户的脚本。在我们搬到新提供商的新 VPS 之前,该脚本运行良好。

脚本不再工作,我收到如下错误:

cURL 错误号:7 cURL 错误:无法连接到 xx.xx.xxx.xxx 权限被拒绝。

似乎 cURL 不起作用。我尝试的是在 PLESK 中将 php 支持从 fastCGI 更改为 Apache 模块,错误消息消失了,但是 PLESK API 什么也没做,尽管页面的加载时间比我使用 fastCGI 时长得多,所以看起来像它做了一些事情。

我还在防火墙中添加了端口 8443 用于传入和传出。

我正在使用 PLESK 11,我的脚本如下所示。

// Plesk login gegevens
$host   = "**********";
$login  = "**********";
$pass   = "**********";
$port   = 8443;


// Maak de FTP map aan
$data =<<<EOF
<packet version="1.6.3.5">
<ftp-user>
<add>
<name>John</name>
<password>Doe1234</password>
<home>/private/John_Doe/</home>
<create-non-existent>true</create-non-existent>
<webspace-id>1</webspace-id>
</add>
</ftp-user>
</packet>

EOF;

sendCommand($data, $login, $pass, $host, $port);

function write_callback($ch, $data) 
{
    // echo $data;
    return strlen($data);
}

function sendCommand($data, $login, $passwd, $host, $port=8443) 
{
    echo $data;

    $script = "enterprise/control/agent.php";
    $url = "https://$host:$port/$script";
    $headers = array(
    "HTTP_AUTH_LOGIN: $login",
    "HTTP_AUTH_PASSWD: $passwd",
    "HTTP_PRETTY_PRINT: TRUE",
    "Content-Type: text/xml",
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HTTPHEADER, &$headers);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'write_callback');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    $result = curl_exec($ch);

    if (!$result) 
    {
         echo "\n\n-------------------------\ncURL error number:".curl_errno($ch);
         echo "\n\ncURL error:".curl_error($ch);
    }

    curl_close($ch);
    return;
}

【问题讨论】:

  • 你的 PHP 配置对 curl 有什么看法。当您查询时,您是否检查了您网站的 apache 日志
  • cURL 已启用,日志文件中没有任何内容...
  • 真是愚蠢的问题但值得一试,您是否更改了 IP 地址以匹配您的新 VPS 服务器? :-)

标签: php api curl fastcgi plesk


【解决方案1】:

我不是 plesk 或 linux 人,但我想在这次讨论中贡献我的一份力量,

我有一个使用 Plesk API 创建 FTP 帐户的脚本。这 在我们搬到新提供商的新 VPS 之前,脚本一直运行良好。

这句话清楚地表明问题不是你的代码,而是你的 VPS。

可能有问题!

1) 客户端权限通过 API-RPC 更新 Parallels Panel,尝试使用管理员凭据。

发现问题:plesk 9.2。所以它可能会在下一个版本中修复,但我不确定。 Source

2) 检查SElinux是否被禁用,如果没有禁用它并检查。您的下一个问题一定是,如何禁用 SElinux。答案就在这里documented

3) 您应该安装 mod_suphp 并按照我们的教程进行操作。在这里查看more

我只是在上面总结,很少有人认为希望它有所帮助。

【讨论】:

    【解决方案2】:

    我不确定,但请参阅下面的 URL,我认为这对您很有帮助。

    Plesk API 中的异常 HTTP 标头

    根据 TRiG 的Unusual HTTP headers in the Plesk API

    或者阅读一下

    下面的答案由rdo根据上面的URL

    1. Plesk 使用自己的标题。在自定义 http 请求中,您可以添加任何有效的标头,例如某些网络服务器会添加自己的标头,例如“由:xxxx 提供支持”,所以没关系。

    2. 漂亮的 xml 输出需要漂亮的打印头。

    3. HTTP_AUTH_LOGIN 标头包含面板用户登录。 HTTP_AUTH_PASSWD 标头包含面板用户密码。 CURLOPT_USERPWD 不是必需的。

    4. 尝试使用这些选项:$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); //等待20分钟

      $response = curl_exec($ch);

    【讨论】:

      【解决方案3】:

      假设您记得更改主机,您的 plesk 用户和密码是否在移动后重新创建?尝试使用脚本中的凭据直接在 VPS 上登录 plesk,以确保帐户正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        • 2015-04-13
        • 2014-01-19
        • 2016-07-04
        • 1970-01-01
        相关资源
        最近更新 更多