file_get_contents dans PHP/Apache2 obtenait des photos d'utilisateur de Facebook. Cela fonctionnait bien jusqu'à récemment. Maintenant, il a toujours temps après une minute, avec cette erreur dans mon Apache2 error.log:PHP file_get_contents & curl peut obtenir des fichiers image de certains sites mais pas d'autres. Pourquoi?
PHP Warning: file_get_contents (https://graph.facebook.com/999999999/picture?width=200): failed to open stream: Délai de connexion dépassé
Voici le code (I récemment ajouté contexte $ pour voir si elle fait le travail qu'il n'a pas.):
$context = stream_context_create(array('https' => array('header'=>'Connection: close\r\n')));
$fbprofileimage = file_get_contents('https://graph.facebook.com/'.$id.'/picture?width=100',false,$context);
j'ai essayé enroulent et il ne fonctionne pas:
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://graph.facebook.com/'.$id.'/picture?width=100');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'StockBet');
$fbprofileimage = curl_exec($curl_handle);
curl_close($curl_handle);
J'ai découvert que file_get_contents & curl fonctionnera avec certains sites, mais pas d'autres.
Les travaux suivants:
$context = stream_context_create(array('https' => array('header'=>'Connection: close\r\n')));
$fbprofileimage = file_get_contents('https://fm.cnbc.com/applications/cnbc.com/resources/img/editorial/2017/08/03/104629909-GettyImages-630953738-bitcoin.240x160.jpg?v=1501760634',false,$context);
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'https://fm.cnbc.com/applications/cnbc.com/resources/img/editorial/2017/08/03/104629909-GettyImages-630953738-bitcoin.240x160.jpg?v=1501760634');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'StockBet');
$fbprofileimage = curl_exec($curl_handle);
curl_close($curl_handle);
Le code ci-dessus peut obtenir les fichiers image ainsi:
- https://b.thumbs.redditmedia.com/SSGv_d2P6ymZVIq8Bm5IVqpcz6WZioCfbRh5rxMPcTc.jpg (Reddit)
- https://try.alexa.com/wp-content/uploads/2017/01/alexa-logo.png
- https://ir.ebaystatic.com/rs/v/fxxj3ttftm5ltcqnto1o4baovyl.png
(eBay) - https://images-na.ssl-images-amazon.com/images/G/01/Gateway/Unrec/T2/Amazon_GW_DesktopShoveler_5_200x200.CB503347722.png
- https://bitcointalk.org/useravatars/avatar_7110.jpg https://try.alexa.com/wp-content/uploads/2017/01/alexa-logo.png
Le code ci-dessus ne peut pas obtenir les fichiers d'image suivants:
- https://www.google.ca/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png
- https://s.yimg.com/uu/api/res/1.2/7rUl71NcpOwqZeJexHuZhA--/Zmk9c3RyaW07aD0xOTM7cHlvZmY9MDtxPTk1O3c9MjIwO3NtPTE7YXBwaWQ9eXRhY2h5b24-/http://media.zenfs.com/en-US/homerun/aol_com_127/ce17fc9999cd894bf3a3dac1416b3230 (Yahoo)
- https://c.disquscdn.com/next/a0cd712/marketing/assets/img/brand/disqus-logo-blue.svg (Disqus)
- https://pbs.twimg.com/profile_images/464794058229964800/uwlkErTI_bigger.png (Twitter)
- https://scontent-yyz1-1.xx.fbcdn.net/v/t45.1600-4/c0.31.284.149/p284x149/21337242_6083114387812_5783480223513182208_n.png?oh=3c78c007377ee96b844e91843dfdfddb&oe=5A183896 (Facebook)
- https://www.ibm.com/cloud-computing/images/ca-en-watson-2-09112017-600x260-p1v1.jpg
Est-ce que quelqu'un sait pourquoi je peux obtenir des fichiers d'images à partir de certains sites, mais pas d'autres?
Avez-vous essayé de consigner la requête curl à l'aide de CURLOPT_VERBOSE? Vous pouvez également utiliser curl_getinfo avant curl_close pour voir si des erreurs HTTP ont été signalées. Il est très probable que ces sites bloquent la sortie si vous omettez un agent utilisateur ou un en-tête référent. –
@RubenVincenten Merci pour votre réponse. Je l'ai eu pour travailler pour mon but. Voir ma réponse posté ci-dessous. – Curt