我有得到一個imgur鏈接,並獲取使用簡單的圖像的高度和寬度代碼:和getimagesize()在PHP中不工作7.1
list($width, $height) = getimagesize($link);
我運行PHP 7.1和一切工作很好,直到我使用了getimagesize()。當函數被調用時,它每次都返回false。然後我恢復到PHP 5.3並且代碼立即工作。
我只是想問是否有一個原因getimagesize()在7.1停止工作?文檔說PHP 7,所以我想我只是困惑。
我有得到一個imgur鏈接,並獲取使用簡單的圖像的高度和寬度代碼:和getimagesize()在PHP中不工作7.1
list($width, $height) = getimagesize($link);
我運行PHP 7.1和一切工作很好,直到我使用了getimagesize()。當函數被調用時,它每次都返回false。然後我恢復到PHP 5.3並且代碼立即工作。
我只是想問是否有一個原因getimagesize()在7.1停止工作?文檔說PHP 7,所以我想我只是困惑。
最好的猜測,$鏈接是一個網址,這意味着它需要php.ini中allow_url_fopen
是true
的和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指出,原來提出的解決辦法的代碼會給出錯誤的結果。更新的代碼應該給出正確的結果。
編輯:修正了一些密碼破譯的拼寫錯誤(在變量名)
OP是否需要維度,並且以字節爲單位給出了大小的答案? (PHP函數名稱有點誤導......) – marekful
@marekful聖潔**是的,你是對的,謝謝。現在刪除了建議的解決方法。 – hanshenrik
更新了新的解決方法。 – hanshenrik
你確定它不是'名單()'是不是失敗? http://php.net/manual/en/function.list.php說:*「**警告**在PHP 5中,list()指定從最右邊參數開始的值。在PHP 7中,list( )以最左邊的參數開始。「*所以這也適用於7.1。也請參閱更新日誌。 –
這很奇怪...它應該工作!哈哈我是戈納測試,馬上 –
啊是的列表()會更有意義哈哈很不錯的發現弗雷德! –