php5.6,php_mbstring扩展启用报错?No such file or directory

当前环境
  • centos
  • 宝塔面板
  • PHP5.6
问题描述

当我调用PHPexif_imagetype函数时候,报错Call to undefined function exif_imagetype()

然后查阅资料,说要开启 php_mbstringphp_exif 扩展

https://blog.csdn.net/guoguo1...

打开扩展 extension=php_exif.dll,
并将extension=php_mbstring.dll ,放到extension=php_exif.dll前边

但是去掉这两个扩展的注释后,重启PHP,报错如下:

[08-May-2019 12:12:30] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/php_mbstring.dll' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/php_mbstring.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[08-May-2019 12:12:30] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/php_exif.dll' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/php_exif.dll: cannot open shared object file: No such file or directory in Unknown on line 0
请问这是为什么?该如何使用exif_imagetype函数
阅读 5.4k
6 个回答

你先看一下下面这个目录里面有没有这些扩展文件如果没有你可以按照下面弄一下

  1. 你要先下载好对应的版本的扩展
  2. 将下载好的扩展放到/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226
  3. 然后再开启扩展

一般都是多个PHP版本出现这种情况,你的dll或者so文件放到php版本1,然后运行的PHP版本是2.所以找不到.

你试试这个有没有用:
要想php_exif能够被成功加载,必须满足下面条件:

  1. php_mbstring.dll 被启用;
  2. php.ini中,php_mbstring.dll 必须在 php_exif.dll 前被加载。

因此,你需要修改默认的php.ini中的这两个模块顺序(默认是字典序)

  1. extension=php_mbstring.dll
  2. extension=php_exif.dll

系统是linux的,注释掉dll的配置没有用的。
首先得在命令行输入php -m查看所有的扩展里有没有你想要的,或者用php输出phpinfo(),在phpinfo页面查看有没有你需要的扩展。
如果没有,你需要安装扩展,可以自己编译安装,也可以直接用centos的yum安装。具体安装方法自己搜一下,有很多资料

你的环境不是centos吗?
为什么要用.dll文件,这个是win环境的扩展文件。
你用php -v 或者打印phpinfo看下有没有这两个扩展

下载个对应版本的php源码包,将上述扩展编译安装,并在php.ini中启用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题