我试图找出一个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\"
}' "
提前感谢!
答案 0 :(得分:4)
答案 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";