Ошибка данных EXIF ​​с PHP

Я создаю веб-сайт, который использует PHP для выбора всех изображений из папки для отображения в галерее. Я также хочу, чтобы тег изображения alt был именем файла EXIF-данных фотографии. Поэтому я разработал этот скрипт:

<?php
$folder = 'cms/galleries/gallery-1/';
$filetype = '*.*';
$files = glob($folder.$filetype);
foreach ($files as $file)
{
    $filedata = exif_read_data($file[$i]);
    if(is_array($filedata) && isset($filedata['FileName'])){
        $filename = $filedata['FileName'];
    } else{
        $filename = explode('.', basename($file[$i]));
        $filename = $filename[0];
    }

    echo '<div class="photoHolder"><div class="photoCell"><a class="fancybox" rel="group" href="'.$file.'"><img class="photo" src="'.$file.'" alt="'.$filename.'"></a></div></div>';
}
?>

Проблема в том, что я получаю эту ошибку:

Фатальная ошибка: вызов неопределенной функции exif_read_data() в C:\AppServ\www\

Я понятия не имею, что это значит, так что может ли кто-нибудь помочь мне с этим или внести несколько незначительных правок, чтобы заставить это работать?


person Foot Promoter    schedule 11.06.2015    source источник
comment
stackoverflow.com/questions/ 16175702/   -  person samayo    schedule 11.06.2015
comment
Как это дубликат? Эти вопросы не похожи на мой код   -  person Foot Promoter    schedule 11.06.2015
comment
@eagle12 На мой предыдущий вопрос не ответили, иначе мне не пришлось бы публиковать этот   -  person Foot Promoter    schedule 11.06.2015
comment
@FootPromoter Им ответили так же, как и выше. Вероятно, у вас не установлена ​​правильная конфигурация для его использования.   -  person eagle12    schedule 11.06.2015
comment
@ eagle12 Раньше я успешно извлекал данные EXIF ​​из изображений, но не из галереи изображений, как я делаю сейчас. Насколько стабильно использование PHP exif на рабочем сервере?   -  person Foot Promoter    schedule 11.06.2015
comment
@FootPromoter Дело не в стабильности, а в том, установлено ли у вас расширение PHP или нет. Ошибка, которую вы опубликовали, указывает на то, что вы этого не делаете. Вопрос, помеченный как дубликат, подскажет, как исправить проблему. Дело не в особенностях вашего кода, а в конфигурации вашего экземпляра PHP. Пожалуйста, внимательно прочитайте принятый ответ на связанный вопрос и не сосредотачивайтесь на коде в вопросе. Ваша проблема имеет ту же основную причину, что и проблема в связанном вопросе.   -  person Chris Baker    schedule 11.06.2015
comment
@ChrisBaker - В моем ini-файле определены как extension=php_mbstring.dll, так и extension=php_exif.dll - но я не знаю, что ищу в файле phpinfo   -  person Foot Promoter    schedule 11.06.2015
comment
@FootPromoter Как указано в связанном вопросе, убедитесь, что расширение exif загружается после mbstring, так как первое зависит от второго. Вы должны иметь возможность искать exif в выводе phpinfo, если вы его не видите, значит, он не загружается. Убедитесь, что вы проверяете правильный php.ini — в некоторых системах есть пара, и вы можете проверить тот, который не используется! Проверьте значение загруженного файла конфигурации на phpinfo, чтобы убедиться.   -  person Chris Baker    schedule 11.06.2015
comment
Между прочим, вот как это выглядит в моей phpinfo: i.imgur.com/AGObIvK.png   -  person Chris Baker    schedule 11.06.2015
comment
Спасибо @ChrisBaker. В моем файле phpinfo нет данных EXIF. Я только что переместил extension=php_exif.dll в строку под extension=php_mbstring.dll и перезапустил сервер, но в файле phpinfo все еще нет информации exif.   -  person Foot Promoter    schedule 11.06.2015
comment
Хорошо, проверил это на реальном сервере, и фотографии отображаются правильно, однако тег alt теперь читает Array вместо фактического текста имени файла. Есть идеи, почему это может быть? @КрисБейкер   -  person Foot Promoter    schedule 11.06.2015
comment
var_dump переменную $filename и посмотреть, что это такое. Базовая отладка — я не могу помочь вам отладить ваш скрипт построчно, пока он не заработает, это в ваших руках. Удачи! :)   -  person Chris Baker    schedule 11.06.2015
comment
@ChrisBaker Что ж, поскольку вывод для этого array(1) { [0]=> string(1) "c" } или, другими словами, meaningless to me, я думаю, мне придется найти совершенно новое решение для кодирования !!! Ура в любом случае   -  person Foot Promoter    schedule 11.06.2015


Ответы (1)


Возможно расширение EXIF ​​не включено. Сначала включите его из файла php.ini.

person Avinash    schedule 11.06.2015
comment
Оба extension=php_mbstring.dll и extension=php_exif.dll включены - person Foot Promoter; 11.06.2015
comment
В моем файле phpinfo нет упоминания об EXIF. Почему? - person Foot Promoter; 11.06.2015