返回php中的curl代码

返回php中的curl代码,php,bash,curl,Php,Bash,Curl,我试图找出在php中curl调用是否成功,在bash中的等价物是: `eval curl -f --data $payload http://localhost/service` if [ $? -ne 0 ]; then echo passed else echo failed fi 到目前为止,我已经在php中实现了这一点,但它不起作用: `eval curl -f --data $PAYLOAD "http://localhost/service"`; i

我试图找出在php中curl调用是否成功,在bash中的等价物是:

`eval curl -f --data $payload http://localhost/service`
if [ $? -ne 0 ]; then
    echo passed
else
    echo failed
fi
到目前为止,我已经在php中实现了这一点,但它不起作用:

    `eval curl -f --data $PAYLOAD "http://localhost/service"`;
    if ( $? == 0 )
        echo fail;
    else
        echo passed;
但是,我得到以下错误PHP解析错误:语法错误、意外的“?”、预期的变量(T_变量)或“$”

有效载荷看起来像对开:

    $PAYLOAD="'payload={ 
    \"firstname\":\"$firstname\",
    \"id\":\"$id\", 
    \"author_lastname\":\"$lastname\"
    }' "

提前谢谢

为什么不直接使用PHP的curl库呢


然后可以使用内置的错误函数捕获异常。

为什么不使用PHP的curl库呢


然后,您可以使用内置的错误函数捕获异常。

正如user2405162所述,最好使用PHP的curl库,但如果您真的想使用shell,请按如下方式执行:

exec("curl -f --data $PAYLOAD \"http://localhost/service\"", $output, $status);
// constant on left side, to catch assignment 
// instead of comparison typos
if ( 0 == $status )
    echo "fail";
else
    echo "passed";
Backquote语法只返回PHP中的输出,不提供状态代码。不过,您可以尝试一些变通方法:

$status = `curl -f --data $payload http://localhost/service > /dev/null; echo $?`
if ( $status == 0 )
    echo "fail";
else
    echo "passed";

正如在这个问题中提到的:

正如user2405162所提到的,最好使用PHP的curl库,但是如果您真的想使用shell,请按如下方式操作:

exec("curl -f --data $PAYLOAD \"http://localhost/service\"", $output, $status);
// constant on left side, to catch assignment 
// instead of comparison typos
if ( 0 == $status )
    echo "fail";
else
    echo "passed";
Backquote语法只返回PHP中的输出,不提供状态代码。不过,您可以尝试一些变通方法:

$status = `curl -f --data $payload http://localhost/service > /dev/null; echo $?`
if ( $status == 0 )
    echo "fail";
else
    echo "passed";

如本问题所述:

$?
不是有效的变量标识符。除了有效的PHP代码之外,您的整个PHP代码都是有效的。
$?
不是有效的变量标识符。除了有效的PHP代码之外,您的整个PHP代码都是有效的。这几乎可以工作!但是我看到了一些错误,比如:eval:id:40,:not found,sh:21:eval:type:11,:not found-这些是有效载荷中的字段,在上面的示例中有效载荷工作得很好,您可以发布$payload变量的内容吗?当然,我已经将其添加到上面的问题中,是eval导致了问题,删除它可以修复问题,但是我确实需要curl调用的状态…所以使用exec而不使用eval-命令状态保存到它的第三个参数中。这几乎可以工作了!但是我看到了一些错误,比如:eval:id:40,:not found,sh:21:eval:type:11,:not found-这些是有效载荷中的字段,在上面的示例中有效载荷工作得很好,您可以发布$payload变量的内容吗?当然,我已经将其添加到上面的问题中,是eval导致了问题,删除它可以修复问题,但是我确实需要curl调用的状态…所以使用exec而不使用eval-命令状态保存到它的第三个参数中。