• 重新编译GD扩展


    问题

    看过我的这篇编译LNMP文章的同学应该知道,我的php是编译安装的,并且gd库是采用静态编译的。下面是当时编译php的参数。

    ./configure --prefix=/usr/local/php 
    --with-gd 
    --enable-gd-native-ttf 
    --enable-gd-jis-conv 
    --enable-mysqlnd 
    --with-mysql=mysqlnd 
    --with-pdo-mysql=mysqlnd 
    --with-openssl 
    --enable-mbstring 
    --enable-fpm

    但是今天就出现了一个问题,我的gd库中没有libjpeg支持,看看错误提示,不能使用imagecreatefromjpeg方法了。

    Fatal error: Call to undefined function imagecreatefromjpeg()  

    解决方法

    当然要重新编译gd啦,但是又由于我采用的是静态编译,所以必须要重新编译php,然后编译gd,最后在php.ini文件中添加扩展so文件。

    • 1、重新编译php

    重新编译php,不要静态编译gd库,也就是说,不要使用--with-gd这样的参数了,使用下面的编译格式。

    ./configure --prefix=/usr/local/php 
    --enable-mysqlnd 
    --with-mysql=mysqlnd 
    --with-pdo-mysql=mysqlnd 
    --with-openssl 
    --enable-mbstring 
    --enable-fpm
    
    make && make install
    • 2、编译libjpeg v9b
    cd /usr/local/src
    wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz
    tar xzvf jpegsrc.v9b.tar.gz
    ./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
    make && make install
    • 3、重新编译gd扩展,给gd扩展添加上libjpeg
    cd /usr/local/src/php-5.6.30/ext/gd #gd的源码目录
    /usr/local/php/bin/phpize #生成configure命令
    
    ./configure --with-php-config=/usr/local/php/bin/php-config -with-png-dir --with-freetype-dir --with-jpeg-dir=/usr/local/libjpeg -with-zlib-dir --with-gd 
    
    make && make install#编译gd

    此时会提示:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226(这个路径就是gd扩展的路径)

    • 4、添加gd扩展
    cd /usr/local/php
    vim lib/php.ini
    
    extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/gd.so #添加新行
    
    • 5、重启服务器

    我的是Nginx,所以只需要重新启动php-fpm就行了,看看是否有jpeg支持了。

    这里写图片描述

  • 相关阅读:
    开源围棋A.I. FoolGo
    再写围棋的MC模拟
    棋串的数据结构
    一种Lua到C的封装
    用vim写ios程序
    一种C函数到Lua的封装
    Unix命令
    RSA java rsa加密,解密,生成密钥对工具类
    UOS 开启远程登录
    UOS 设置 java 程序开机启动
  • 原文地址:https://www.cnblogs.com/cnsec/p/13407001.html
Copyright © 2020-2023  润新知