安装 Fileinfo 扩展

最近的PHP项目中,需要用到切图和缩图的效果,在linux开发环境,安装过程遇到好多问题,在此与大家分享
报错信息类似于;

PHP Fileinfo extension must be installed/enabled to use Intervention Image
GD Library extension not available with this PHP installation

大致的意思就是你没有安装这些扩展;
你不能使用这些函数;
今天就和小伙伴们分享一些安装php扩展的经验;
所谓前人栽树后人乘凉吗;
php提供了扩展官网;
哪里不会点哪里;
首先服务器上面需要安装php
没安装php的小伙伴可以安装PHP

fileinfo 扩展

进入到php的源码包位置 注意是源码包位置 , 不是安装位置

cd /usr/local/src/php-7.1.20/ext/fileinfo  //我这里源码包的路径

ll 看一下;
发现里面没有 configure 这个文件夹;
这里我们需要执行一下;

/usr/local/php/bin/phpize

如果php安装的路径不是我这个路径;
还可以执行这个命令找到 phpize;

which phpize //返回phpize的路径

phpize

该phpize命令是用来为PHP扩展准备构建环境;
想详细了解的 点这里

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

出现以上的字幕说明成功了;
ll 看一下 出现了configure这个文件夹;
然后我们在执行下命令;

./configure -with-php-config=/usr/local/php/bin/php-config  //-with-php-config=php配置文件路径
make && make install  //编译 及 安装

哎呀, 我在这一步报了过错;
没有报错的小伙伴可以接着往下走make: *** [libmagic/apprentice.lo] Error 1;
编译时内存不足;
这个问题网上的大部分回答都是;
在./configure脚本后面加上 --disable-fileinfo;
但是我加上了 还是没有用 (╥╯^╰╥);
最后通过这种办法解决了;
添加swap交换内存;

#1.进入目录
cd /var
#2.获取要增加的SWAP文件块(这里以1GB为例)
dd if=/dev/zero of=swapfile bs=1024 count=1038336
#3.创建SWAP文件
/sbin/mkswap swapfile
#4.激活SWAP文件
/sbin/swapon swapfile
#5.查看SWAP信息是否正确
/sbin/swapon -s
#6.添加到fstab文件中让系统引导时自动启动
echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab

操作示例;

[root@iZ25uog2aivZ var]# dd if=/dev/zero of=swapfile bs=1024 count=1038336
1038336+0 records in
1038336+0 records out
1063256064 bytes (1.1 GB) copied, 19.287 s, 55.1 MB/s
[root@iZ25uog2aivZ var]# /sbin/mkswap swapfile
Setting up swapspace version 1, size = 1038332 KiB
no label, UUID=59e3b114-ed70-4d64-af01-2d02873fa358
[root@iZ25uog2aivZ var]# /sbin/swapon swapfile
swapon: /var/swapfile: insecure permissions 0644, 0600 suggested.
[root@iZ25uog2aivZ var]# /sbin/swapon -s
Filename                Type        Size    Used    Priority
/var/swapfile                              file    1038332    0    -1
[root@iZ25uog2aivZ var]# echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab
[root@iZ25uog2aivZ var]# free -m
             total       used       free     shared    buffers     cached
Mem:           992        923         69         81          1        309
-/+ buffers/cache:        611        381
Swap:         1013          0       1013

然后继续执行 make && make install
发现不报错了 (╥╯^╰╥) OK;

----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/src/php-7.1.20/ext/curl/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/ //存放扩展的路径

看到以上的代码 , 就说明编译安装成功了 (╥╯^╰╥)

错误解决与没有报错的小伙伴 可以直接到这一步;
接下来就可以修改 php.ini文件了;
这里我装作不知道php.ini文件在哪个地方 (其实我真的不知道);
可以执行命令;

[root@VM_0_16_centos curl]# php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/php/lib
Loaded Configuration File => /usr/local/php/lib/php.ini

编辑php.ini文件

vim /usr/local/php/lib/php.ini
找到这个
;/extension_dir
修改成
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/" //这个路径对应着上面那个存放扩展的路径

在下面加上

extension=fileinfo.so

然后在重新启动 php

pkill php-fpm //杀死php进程
/usr/local/php/sbin/php-fpm //启动php

进入phpinfo 说明 fileinfo安装成功
fileinfo

史大坨博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论