如果通过浏览器加载,Curl 和 php 将无法工作
Curl and php wont work if loaded through browser
我正在尝试将此调用的响应写入一个文件,但只有当我在 cli 中 运行 它才会写入。当我 运行 它通过浏览器时没有任何反应。
$url = 'https://api.dropbox.com/1/oauth2/token';
$app_key = '************';
$app_secret = '***********';
$auth_code = '******************************';
$redirect_uri = "https://dev.subely.com/test/";
$rdata = 'code=' . $auth_code . '&grant_type=authorization_code&redirect_uri=' . $redirect_uri;
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $rdata);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch, CURLOPT_USERPWD, $app_key.':'.$app_secret);
$response = curl_exec( $ch );
file_put_contents("/tmp/response.log", $response, FILE_APPEND);
echo "done";
?>
很可能是 SSL 验证问题(默认 SSL 验证是 TRUE
)。正如您所说,它在 CLI 中工作,但在网络上它不工作。
添加
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
另外,如果你检查一下curl的执行情况就好了
$response = curl_exec( $ch );
if($response === false) {
echo 'Curl error: ' . curl_error($ch);
} else {
file_put_contents("/tmp/response.log", $response, FILE_APPEND);
}
我正在尝试将此调用的响应写入一个文件,但只有当我在 cli 中 运行 它才会写入。当我 运行 它通过浏览器时没有任何反应。
$url = 'https://api.dropbox.com/1/oauth2/token';
$app_key = '************';
$app_secret = '***********';
$auth_code = '******************************';
$redirect_uri = "https://dev.subely.com/test/";
$rdata = 'code=' . $auth_code . '&grant_type=authorization_code&redirect_uri=' . $redirect_uri;
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $rdata);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch, CURLOPT_USERPWD, $app_key.':'.$app_secret);
$response = curl_exec( $ch );
file_put_contents("/tmp/response.log", $response, FILE_APPEND);
echo "done";
?>
很可能是 SSL 验证问题(默认 SSL 验证是 TRUE
)。正如您所说,它在 CLI 中工作,但在网络上它不工作。
添加
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
另外,如果你检查一下curl的执行情况就好了
$response = curl_exec( $ch );
if($response === false) {
echo 'Curl error: ' . curl_error($ch);
} else {
file_put_contents("/tmp/response.log", $response, FILE_APPEND);
}