【问题标题】:Run Curl command to the Linux Server via php通过 php 向 Linux 服务器运行 Curl 命令
【发布时间】:2023-05-06 20:27:01
【问题描述】:

我需要在 Linux Wowza 服务器上运行 curl 命令,这是我需要在远程机器上执行的 Curl 命令。

curl -X PUT --header 'Accept:application/json; charset=utf-8' http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/mystream/actions/restart --digest -u "user:password"

这是我转换为 php 的 curl

<?php
    $url = 'http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/mystream/actions/restart';
    $username = 'user';
    $pass = 'password';
    $ch = curl_init();
    curl_setopt ( $ch, CURLOPT_URL, "$url");
    curl_setopt ( $ch, CURLOPT_POST, 1 );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERNAME, "$username");
    curl_setopt($ch, CURLOPT_PASSWORD, "$password")
    curl_close ($ch);
?>

任何提示都会帮助我解决这个问题。提前致谢

【问题讨论】:

  • 您遇到了什么问题?也不要添加" 用于在CURLOPT_USERNAMECURLOPT_PASSWORD 中传递参数变量
  • 我想确认这是 curl 命令的正确翻译,我不知道它是否正在运行

标签: php linux curl ubuntu-14.04 wowza


【解决方案1】:

你不需要双引号你的变量。所以,例如

curl_setopt ( $ch, CURLOPT_URL, "$url");

应该是

curl_setopt ( $ch, CURLOPT_URL, $url);

其次,你需要一个 curl_exec 来让 CURL 请求做一些事情

curl_exec($ch);

最后,确保您可以以某种方式调试响应

if($err = curl_error($ch)) echo 'Error: ' . $err;

这是添加标题的方法

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept:application/json', 'charset=utf-8'));

您的用户名/密码设置也错误

 curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);

【讨论】:

  • 嘿@Machavity 感谢您的时间,但我没有在网页上得到任何回复。所以我不知道这个命令是否成功执行
  • 然后尝试回显curl_exec的结果
  • -X PUT --header 'Accept:application/json; 我不需要在 mycode 中为这个标头创建一个 curl 变量
  • 谢谢你的粗心大意,我还在测试中,完成后会将其标记为已回答
  • 我可以运行代码,但我得到以下警告,。 The request require user authentication;你能帮帮我吗
【解决方案2】:

为确保您使用 Digest 身份验证发出请求,我将在您的 php-curl 请求中包含以下选项:

curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);                                                            
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);    

其次,确保在请求中包含以下标头:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                                'Accept:application/json; charset=utf-8',
                                'Content-type:application/json; charset=utf-8'
                    ));

然后在您的 Wowza 安装中,确认您在 RestInterface 元素下的 Server.xml configuration 具有以下内容:

<AuthenticationMethod>digest</AuthenticationMethod> 

最后,如果您遇到更多麻烦,您可以添加以下调试元素以进一步调查您的请求的任何剩余问题(在 Server->RestInterface->Properties 下):

        <Property>
            <Name>debugEnable</Name>
            <Value>true</Value>
        </Property>

【讨论】: