2017-07-22 52 views
-1

我有得到一個imgur鏈接,並獲取使用簡單的圖像的高度和寬度代碼:和getimagesize()在PHP中不工作7.1

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

我運行PHP 7.1和一切工作很好,直到我使用了getimagesize()。當函數被調用時,它每次都返回false。然後我恢復到PHP 5.3並且代碼立即工作。

我只是想問是否有一個原因getimagesize()在7.1停止工作?文檔說PHP 7,所以我想我只是困惑。

+0

你確定它不是'名單()'是不是失敗? http://php.net/manual/en/function.list.php說:*「**警告**在PHP 5中,list()指定從最右邊參數開始的值。在PHP 7中,list( )以最左邊的參數開始。「*所以這也適用於7.1。也請參閱更新日誌。 –

+0

這很奇怪...它應該工作!哈哈我是戈納測試,馬上 –

+1

啊是的列表()會更有意義哈哈很不錯的發現弗雷德! –

回答

1

最好的猜測,$鏈接是一個網址,這意味着它需要php.ini中allow_url_fopentrue的和getimagesize檢查它,你擁有它true在PHP5的php.ini文件,並在false PHP7的PHP .ini - 這會導致你描述的問題。替代方案,既PHP版本和兩個php.ini設置兼容,應該是:

$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. 

編輯:由@marekful指出,原來提出的解決辦法的代碼會給出錯誤的結果。更新的代碼應該給出正確的結果。

編輯:修正了一些密碼破譯的拼寫錯誤(在變量名)

+0

OP是否需要維度,並且以字節爲單位給出了大小的答案? (PHP函數名稱有點誤導......) – marekful

+0

@marekful聖潔**是的,你是對的,謝謝。現在刪除了建議的解決方法。 – hanshenrik

+0

更新了新的解決方法。 – hanshenrik