XAMPP开启exif扩展教程 XAMPP读取照片元数据配置

夏磊酱_8946

夏磊酱_8946

2026-05-07

450人浏览

原创

exif扩展在xampp中默认关闭,需手动启用:先取消php.ini中;extension=mbstring和;extension=exif的注释(mbstring必须在exif前),保存后重启apache,再用exif_read_data()读取jpeg/tiff元数据。

xampp开启exif扩展教程 xampp读取照片元数据配置

exif 扩展在 XAMPP 中默认是关闭的,必须手动启用才能用 exif_read_data() 读取 JPEG/TIFF 图片的拍摄时间、相机型号等元数据。

确认 exif 扩展是否已安装

不是所有 XAMPP 版本都预编译了 exif 扩展。先检查 phpinfo() 页面是否有 “exif” 模块信息,或直接运行:

<?php var_dump(function_exists('exif_read_data')); ?>
返回 false 就说明没启用,甚至可能根本没装。

常见错误现象:Call to undefined function exif_read_data() —— 这不是代码写错了,是 PHP 根本不认这个函数。

  • XAMPP Windows 版通常自带 php_exif.dll,但默认被注释掉
  • XAMPP Linux/macOS 版需确认 exif.so 是否存在于 extension_dir 目录下(路径可在 phpinfo() 查)
  • exif 依赖 mbstring,如果 mbstring 也没开,启用 exif 会静默失败

修改 php.ini 启用 exif(XAMPP Windows/Linux 通用)

找到你正在使用的 php.ini 文件(不是 php.ini-development 或 php.ini-production 备份文件),用文本编辑器打开。

搜索以下两行并去掉前面的分号:

XAMPP 8.0.30
XAMPP 8.0.30

XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin

下载
;extension=mbstring<br>;extension=exif
→ 改为:
extension=mbstring<br>extension=exif
  • 顺序很重要:mbstring 必须在 exif 之前启用,否则 exif_read_data() 可能返回空数组
  • Windows 下扩展名是 .dll,Linux/macOS 是 .so,XAMPP 通常已配好,不用改后缀
  • 改完保存,**必须重启 Apache**(不是刷新页面,也不是重载配置)

验证 exif_read_data() 能否正常读取 JPEG 元数据

exif_read_data() 只支持 JPEG 和 TIFF,对 PNG/WebP/GIF 等格式直接报错或返回空 —— 这不是 bug,是设计如此。

一个最小可运行验证脚本:

<?php <br>$path = 'test.jpg';<br>if (!file_exists($path) || !is_readable($path)) {<br>    die('文件不存在或不可读');<br>}<br>$exif = exif_read_data($path);<br>if (!$exif) {<br>    echo "No EXIF data (可能是非JPEG格式,或文件无EXIF)";<br>    return;<br>}<br>echo "相机: " . ($exif['Make'] ?? 'N/A') . " " . ($exif['Model'] ?? '') . "\n";<br>echo "拍摄时间: " . ($exif['DateTime'] ?? 'N/A');<br>?>
  • 务必用真实带 EXIF 的 JPEG 测试(手机拍的图、单反直出 JPG 都行;截图或网页下载的 JPG 往往已被剥离元数据)
  • 如果输出全是 N/A,但函数没报错,大概率是图片本身不含 EXIF —— 可用系统自带看图工具“属性 → 详细信息”对照验证
  • 注意时区:EXIF 中的 DateTime 是本地时间字符串,不带时区偏移,PHP 不会自动转换

WebP、PNG 等格式无法用 exif_read_data()?别硬刚

exif_read_data() 对 WebP 返回 Warning: exif_read_data(): File not supported,对 PNG 直接返回 false —— 这是预期行为,不是配置问题。

想读 WebP 的 EXIF/XMP,得换方案:
– 用 Imagick:$imagick->getImageProperties("exif:*")
– 或调用命令行 exiftool:exec('exiftool -json ' . escapeshellarg($path), $output)

  • Imagick 需单独开启扩展,且 WebP 支持依赖于底层 ImageMagick 是否编译了 libwebp
  • 用 exiftool 要确保系统已安装,并注意 escapeshellarg() 防注入,不能直接拼接用户上传的文件名
  • 别试图用 fread() + 手动解析 RIFF 块——WebP 的 EXIF 块位置不固定,容易读错

最容易被忽略的一点:exif 数据可能被浏览器/微信/网盘二次压缩时自动剥离,你本地测试正常的图,一上传就没了 EXIF —— 别急着调环境,先确认源文件是否真的还带着元数据。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

xampp

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

9364

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5641

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2035

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3528

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4194

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3291

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4677

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3642

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11682

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程