Plesk API和cURL不起作用

时间:2012-11-03 09:44:41

标签: php api curl fastcgi plesk

我有一个使用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;
}

3 个答案:

答案 0 :(得分:2)

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

  

我有一个使用Plesk API创建FTP帐户的脚本。该   脚本工作完美,直到我们在新的提供商处转移到新的VPS。

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

问题可能!

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

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

2)检查SElinux是否被禁用,如果没有禁用它并检查。您的下一个问题必须是,如何禁用SElinux 。答案很顺利documented

3)您应该安装 mod_suphp 并按照我们的教程进行操作。点击此处查看more

我刚才总结,很少有人认为希望它有所帮助。

答案 1 :(得分:0)

我不确定,但请看下面的网址我觉得这对你很有帮助。

Plesk API中不寻常的HTTP标头

根据TRiG的Unusual HTTP headers in the Plesk API

或阅读

根据上面的网址

下面的 by rdo
  1. Plesk使用自己的标头。在自定义http请求中,您可以添加任何有效的标头,例如某些Web服务器添加自己的标头,如'powered by: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);

答案 2 :(得分:0)

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