美文网首页我爱编程
在Centos安装php7扩展fileinfo

在Centos安装php7扩展fileinfo

作者: 阿耀王子 | 来源:发表于2018-04-16 11:13 被阅读0次

    php安装fileinfo扩展
    今天安装laravel mews/captcha来实现 Laravel 中的验证码功能。
    我的系统环境

    CentOS Linux 7.4.1708
    PHP 7.2.4
    

    没想到居然安装不上,具体如下

    [root@VM_0_4_centos larabbs]# composer require mews/captcha
    Using version ^2.1 for mews/captcha
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Your requirements could not be resolved to an installable set of packages.
    
    Problem 1
      - mews/captcha 2.1.0 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha 2.1.7 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha 2.1.8 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha v2.1.1 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha v2.1.2 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha v2.1.3 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha v2.1.4 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha v2.1.5 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - mews/captcha v2.1.6 requires intervention/image ~2.2 -> satisfiable by intervention/image[2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.10, 2.3.11, 2.3.12, 2.3.13, 2.3.14, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.3.7, 2.3.8, 2.3.9, 2.4.0, 2.4.1].
      - intervention/image 2.4.1 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.4.0 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.9 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.8 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.7 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.6 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.5 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.4 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.3 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.2 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.14 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.13 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.12 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.11 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.10 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.1 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.3.0 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.2.2 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.2.1 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - intervention/image 2.2.0 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
      - Installation request for mews/captcha ^2.1 -> satisfiable by mews/captcha[2.1.0, 2.1.7, 2.1.8, v2.1.1, v2.1.2, v2.1.3, v2.1.4, v2.1.5, v2.1.6].
    
    To enable extensions, verify that they are enabled in your .ini files:
      - /www/server/php/71/etc/php.ini
    You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
    
    Installation failed, reverting ./composer.json to its original content.
    

    之后才知道是因为没有安装php扩展fileinfo的原因,那么下面就来安装一下:
    首先查找fileinfo源码放在哪里

    [root@VM_0_4_centos larabbs]# find / -name fileinfo
    /www/server/php/72/src/ext/fileinfo
    

    进入目录

    cd /www/server/php/72/src/ext/fileinfo
    

    phpize是编译PHP扩展的工具,主要是根据系统信息生成对应的configure文件
    开始扩展的安装:

    [root@VM_0_4_centos fileinfo]# find / -name phpize
    /usr/bin/phpize
    /www/server/php/71/bin/phpize
    /www/server/php/72/src/scripts/phpize
    /www/server/php/72/bin/phpize
    

    初始化扩展安装

    [root@VM_0_4_centos fileinfo]# /www/server/php/72/bin/phpize
    Configuring for:
    PHP Api Version:         20170718
    Zend Module Api No:      20170718
    Zend Extension Api No:   320170718
    

    生成编译配置

    [root@VM_0_4_centos fileinfo]# ./configure --with-php-config=/www/server/php/72/bin/php-config
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for cc... cc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether cc accepts -g... yes
    checking for cc option to accept ISO C89... none needed
    checking how to run the C preprocessor... cc -E
    checking for icc... no
    checking for suncc... no
    checking whether cc understands -c and -o together... yes
    checking for system library directory... lib
    checking if compiler supports -R... no
    checking if compiler supports -Wl,-rpath,... yes
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking target system type... x86_64-unknown-linux-gnu
    configure: error: Cannot find php-config. Please use --with-php-config=PATH
    [root@VM_0_4_centos fileinfo]# ./configure --with-php-config=/www/server/php/72/bin/php-config
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for cc... cc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether cc accepts -g... yes
    checking for cc option to accept ISO C89... none needed
    checking how to run the C preprocessor... cc -E
    checking for icc... no
    checking for suncc... no
    checking whether cc understands -c and -o together... yes
    checking for system library directory... lib
    checking if compiler supports -R... no
    checking if compiler supports -Wl,-rpath,... yes
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking target system type... x86_64-unknown-linux-gnu
    checking for PHP prefix... /www/server/php/72
    checking for PHP includes... -I/www/server/php/72/include/php -I/www/server/php/72/include/php/main -I/www/server/php/72/include/php/TSRM -I/www/server/php/72/include/php/Zend -I/www/server/php/72/include/php/ext -I/www/server/php/72/include/php/ext/date/lib
    checking for PHP extension directory... /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718
    checking for PHP installed headers prefix... /www/server/php/72/include/php
    checking if debug is enabled... no
    checking if zts is enabled... no
    checking for re2c... no
    configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
    checking for gawk... gawk
    checking for fileinfo support... yes, shared
    checking for strcasestr... yes
    checking for utimes... yes
    checking for strndup... yes
    checking for ld used by cc... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for /usr/bin/ld option to reload object files... -r
    checking for BSD-compatible nm... /usr/bin/nm -B
    checking whether ln -s works... yes
    checking how to recognize dependent libraries... pass_all
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking dlfcn.h usability... yes
    checking dlfcn.h presence... yes
    checking for dlfcn.h... yes
    checking the maximum length of command line arguments... 1572864
    checking command to parse /usr/bin/nm -B output from cc object... ok
    checking for objdir... .libs
    checking for ar... ar
    checking for ranlib... ranlib
    checking for strip... strip
    checking if cc supports -fno-rtti -fno-exceptions... no
    checking for cc option to produce PIC... -fPIC
    checking if cc PIC flag -fPIC works... yes
    checking if cc static flag -static works... no
    checking if cc supports -c -o file.o... yes
    checking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... no
    
    creating libtool
    appending configuration tag "CXX" to libtool
    configure: creating ./config.status
    config.status: creating config.h
    

    编译并安装

    [root@VM_0_4_centos larabbs]# make && make install
    

    然后修改php.ini文件,找到下面这一行

    ;extension=fileinfo
    

    分号去掉即可,然后安装 mews/captcha 扩展包

    [root@VM_0_4_centos larabbs]# composer require mews/captcha
    Do not run Composer as root/super user! See https://getcomposer.org/root for details
    Using version ^2.1 for mews/captcha
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 4 installs, 0 updates, 0 removals
      - Installing psr/http-message (1.0.1): Downloading (100%)
      - Installing guzzlehttp/psr7 (1.4.2): Downloading (100%)
      - Installing intervention/image (2.4.1): Downloading (100%)
      - Installing mews/captcha (2.1.8): Downloading (100%)
    intervention/image suggests installing ext-imagick (to use Imagick based image processing.)
    intervention/image suggests installing intervention/imagecache (Caching extension for the Intervention Im)
    Writing lock file
    Generating optimized autoload files
    > Illuminate\Foundation\ComposerScripts::postAutoloadDump
    > @php artisan package:discover
    Discovered Package: fideloper/proxy
    Discovered Package: intervention/image
    Discovered Package: laravel/tinker
    Discovered Package: mews/captcha
    Package manifest generated successfully.
    

    或者指定版本安装

     composer require "mews/captcha:~2.0"
    

    如果报如下问题:

    PHP Fileinfo extension must be installed/enabled to use Intervention Image
    

    请重启php

    [root@VM_0_4_centos larabbs]# service php-fpm-72 restart
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    

    相关文章

      网友评论

        本文标题:在Centos安装php7扩展fileinfo

        本文链接:https://www.haomeiwen.com/subject/pevskftx.html