我正在尝试将用户的个人资料图片保存到我的服务器中,但每当我执行我的代码时,它只会给我一个0字节的jpg文件。
这是我尝试但没有工作的第一个代码。
including
这是我从另一个线程获得的第二个代码
$fp = fopen ('fb_profilepic.jpg', 'w+');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://graph.facebook.com/875644792482183/picture');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow the redirection
curl_setopt($ch, CURLOPT_FILE, $fp); // write curl response to file
curl_exec($ch); // get curl response
curl_close($ch);
fclose($fp);
答案 0 :(得分:0)
您正在寻找
file_put_contents("image.jpg",file_get_contents("http://graph.facebook.com/875644792482183/picture"));
答案 1 :(得分:0)
看起来似乎存在从http
到https
的重定向,并且由于证书错误,OpenSSL无法处理它。为了解决这个问题,你可以这样做:
首先:检查将在default_cert_file密钥中的证书文件位置,您将在openssl_get_cert_locations()中找到它的php openssl函数:
$ php -r "print_r(openssl_get_cert_locations());"
Array
(
[default_cert_file] => /opt/lampp/share/openssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] => /opt/lampp/share/openssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] => /opt/lampp/share/openssl/private
[default_default_cert_area] => /opt/lampp/share/openssl
[ini_cafile] =>
[ini_capath] =>
)
第二:下载http://curl.haxx.se/ca/cacert.pem:
$ wget http://curl.haxx.se/ca/cacert.pem
第三:将证书PEM文件复制到default_cert_file位置:
$ sudo mv cacert.pem /opt/lampp/share/openssl/cert.pem
请注意,您的default_cert_file可能指向某个与此不同的位置。
答案 2 :(得分:0)
我实际上解决了相反的问题,将http://更改为https://。
curl_setopt ($ch, CURLOPT_URL, 'https://graph.facebook.com/875644792482183/picture');