PHP:exif_read_data()未定义。

6

我现在正在学习如何从图片中提取exif信息。我写了一个简单的代码,像这样:

<?php
//Get the exif data
$exif_data = exif_read_data('sample.jpg');
print_r($exif_data);
?>

但是,当运行代码时,关于未定义的exif_read_data()出现了致命错误。 我是一个Windows用户,我已经像这样修改了php.ini文件:
extension=php_mbstring.dll
extension=php_exif.dll

感谢您的帮助。

1
这些扩展在 phpinfo() 输出中显示吗? - Linus Kleen
3个回答

10
  • 您的系统中Php/ext文件夹下是否有这些DLL文件?

  • 在编辑php.ini后,您是否重启了Apache?

  • 您编辑的php.ini是系统使用的吗? 您可以通过阅读<?php phpinfo() ?>输出来验证此内容。

  • <?php phpinfo() ?>输出中是否有关于EXIF扩展的一些信息?


4
似乎有人认为这个答案更像一条评论。 - Linus Kleen
1
我也因为这个原因投了反对票,因为当时答案实际上只是第一个要点。那更像是一条评论。现在它已经更像一个清单,所以答案已经改进了。 - Oldskool
1
好的,实际上这并不是一个字面上的答案。当用户提供了询问的信息后,我会加以改进 :) 谢谢。 - lorenzo-s
1
@Oldskool:如果您无法撤消您的反对票,我已经进行了一次“顶贴编辑”,这样您就可以撤销了。 - BoltClock
1
得去除我的也。谢谢,@Bolt。 - Linus Kleen

3
如果你在php.ini动态扩展中启用了exif.so或php_exif.dll,但仍然无法运行任何函数,那么可能需要更改php.ini中扩展的顺序。

在许多PHP安装包中,扩展按字母顺序列出。然而,exif依赖于首先加载mbstrings。然而,使用字母排序,exif在mbstrings之前列出,导致错误。请在exif之前加载mbstrings扩展。

因此,请将exif放在最后一个要加载的扩展,并且您应该可以正常运行。

http://php.net/manual/en/book.exif.php


使用 phpinfo() 进行检查。 - Faishal

-2

试试这个

 if(extension_loaded("exif"))
    $exif_data = exif_read_data('sample.jpg','EXIF',true);
 else 
    $exif_data = false;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接