我正在尝试处理来自$data = curl_exec($ch);
的结果,而不是在屏幕上打印它。为了实现这一点,我将选项CURLOPT_RETURNTRANSFER
设置为true
,如下所示:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
在我的本地服务器上,这可以按预期工作,但是当我在服务器上将相同的文件放在网上时,它不起作用。
当我将CURLOPT_RETURNTRANSFER
设置为false
时,它可以正常工作。
我做错了什么?
答案 0 :(得分:20)
如果您将CURLOPT_RETURNTRANSFER
设置为true
或1
,则curl_exec
的返回值将是成功操作的实际结果。换句话说,它不会在成功时返回TRUE
。虽然它会在失败时返回FALSE
。
如curl-exec
PHP手册页的“返回值”部分所述:http://php.net/manual/function.curl-exec.php
您应该为重定向启用CURLOPT_FOLLOWLOCATION
选项,但如果您的服务器位于safe_mode
且/或open_basedir
生效,这可能会导致卷曲问题,这将是一个问题
答案 1 :(得分:0)
如果它在您的本地环境中运行良好,则可能是服务器已在您为cURL设置的目标URL上阻止了远程服务器的IP。 您需要验证是否允许您的远程服务器访问为 CURLOPT_URL 设置的URL。
答案 2 :(得分:-2)
试试这一行:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
后:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);