2017-07-22 2 views
-1

J'ai un code qui obtient un lien Imgur et va chercher la hauteur et la largeur de l'image en utilisant la simple:getimagesize() ne fonctionne pas en PHP 7.1

list($width, $height) = getimagesize($link); 

je courais PHP 7.1 et tout fonctionnait bien jusqu'à ce que Je suis arrivé à l'utilisation de getimagesize(). Lorsque la fonction a été appelée, elle renvoyait false à chaque fois. Je suis ensuite revenu à PHP 5.3 et le code a fonctionné immédiatement.

Je voulais juste demander s'il y avait une raison getimagesize() a cessé de travailler en 7.1? La documentation dit PHP 7 donc je suppose que je suis juste confus.

+0

Etes-vous sûr qu'il n'est pas 'la liste()' qui n'est pas échec? http://php.net/manual/en/function.list.php dit: * "** Attention ** En PHP 5, la liste() affecte les valeurs en commençant par le paramètre le plus à droite en PHP 7, liste (.) commence par le paramètre le plus à gauche. "* Ceci pourrait donc également s'appliquer à 7.1. Voir le Changelog aussi. –

+0

C'est bizarre ... ça devrait marcher! lol je suis gona tester tout de suite –

+1

Ah oui la liste() ferait plus de sens lol Nice trouver Fred! –

Répondre

1

meilleure estimation, $ link est une URL, ce qui signifie qu'il exige que les php.ini réglage allow_url_fopen être true pour getimagesize de le vérifier, et vous avez à true dans les php.ini de php5 et false dans php php7 .ini - cela causerait le problème que vous décrivez. une alternative, compatible avec les deux versions de php et les deux paramètres php.ini, serait:

$tmp=tmpfile(); 
$file=stream_get_meta_data($tmp)['uri']; 
$ch=curl_init($link); 
curl_setopt_array($ch,array(
CURLOPT_FILE=>$file, 
CURLOPT_ENCODING=>'' 
)); 
curl_exec($ch); 
curl_close($ch); 
list($width, $height) = getimagesize($file); 
fclose($tmp); // << explicitly deletes the file, freeing up disk space etc~ - though php would do this automatically at the end of script execution anyway. 

edit: comme l'a souligné @marekful, le code de contournement proposée d'origine donnerait le mauvais résultat. le code mis à jour devrait donner le bon résultat.

modifier: Correction de fautes révolutionnaire code (dans les noms de variables)

+0

L'OP ne voulait pas les dimensions et vous donnez une réponse pour la taille en octets? (Le nom de la fonction PHP est un peu trompeur ...) – marekful

+0

@marekful holy ** ouais, vous avez raison, merci. supprimé la solution de contournement proposée pour l'instant. – hanshenrik

+0

mis à jour avec une nouvelle solution de contournement. – hanshenrik