返回php中的curl代码
我试图找出在php中curl调用是否成功,在bash中的等价物是:返回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
`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-命令状态保存到它的第三个参数中。