在php中返回curl代码

时间:2015-07-29 10:07:56

标签: php bash curl

我试图找出一个curl调用是否成功在php中,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 Parse错误:语法错误,意外'?',期待变量(T_VARIABLE)或' $'

有效载荷看起来像对开:

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

提前感谢!

2 个答案:

答案 0 :(得分:4)

为什么不使用PHP的curl库?

https://secure.php.net/manual/en/ref.curl.php

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

答案 1 :(得分:1)

正如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";

反引号语法仅返回PHP中的输出,不提供状态代码。但是你可以尝试一些解决方法:

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

如本问题所述:getting output and exit status from shell_exec()