本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

PHP常见错误解决方案

使用phpize为PHP动态添加扩展时,报Cannot find autoconf错误

  • 解决方案
    $ /app/php/bin/phpize
    Configuring for:
    PHP Api Version:         20170718
    Zend Module Api No:      20170718
    Zend Extension Api No:   320170718
    Cannot find autoconf. Please check your autoconf installation and the
    $PHP_AUTOCONF environment variable. Then, rerun this script.
    $ yum -y install m4 autoconf #手动编译m4和autoconf亦可(不推荐) --> 解决方案
    $ /app/php/bin/phpize
    Configuring for:
    PHP Api Version:         20170718
    Zend Module Api No:      20170718
    Zend Extension Api No:   320170718

为PHP添加php-curl扩展

本文转自数字漩涡。

  • 问题描述
    $ ./configure \
    --prefix=/app/php \
    --enable-mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-openssl \
    --enable-mbstring \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --with-libxml-dir=/usr \
    --enable-xml \
    --enable-sockets \
    --enable-fpm \
    --with-config-file-path=/etc/ \
    --with-config-file-scan-dir=/etc/php.d \
    --with-bz2 \
    --with-gd \
    --with-curl

    ...省略中间的Check过程...

    checking for cURL 7.10.5 or greater... configure: error: cURL version 7.10.5 or later is required to compile php with cURL support #环境检查程序检测到需要cURL版本7.10.5或更高版本才能使用cURL支持编译php,意即当前PHP源码包中的cURL版本较旧,不支持'--with-curl'编译选项
  • 解决方案:
    $ yum -y install curl-devel
    $ wget -O /usr/src/curl-7.64.0.tar.gz https://curl.haxx.se/download/curl-7.64.0.tar.gz
    $ cd /usr/src
    $ tar xf curl-7.64.0.tar.gz
    $ cd curl-7.64.0
    $ /app/php/bin/phpize
    Cannot find config.m4. #提示未发现config.m4文件
    Make sure that you run '/app/php/bin/phpize' in the top level source directory of the module

    $ cp /usr/src/php-7.2.5/ext/curl/config.m4 . #拷贝PHP源码包中的config.m4文件到当前目录下
    $ /app/php/bin/phpize
    Configuring for:
    PHP Api Version:         20170718
    Zend Module Api No:      20170718
    Zend Extension Api No:   320170718

    $ ./configure --with-php-config=/app/php/bin/php-config #调用configure生成Makefile文件,指定phpize要建立基于哪个php版本的扩展
    $ make -j4 #编绎
    $ make install #复制安装
    $ find /usr/local/ -name 'curl.so' #查找生成的curl.so文件
    /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/curl.so
    $ cat /etc/php.ini | grep curl.so #将curl.so文件路径添加到php.ini的extension(扩展)部分
    extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/curl.so
    $ service php-fpm restart #重启`PHP-FPM`程序以重载php.ini文件
    $ php-fpm -m | grep curl #检查php-curl扩展是否添加成功
    curl

PHP连接远程DB服务器

转载请先获得授权

  • MySQL为例
    $ yum -y install php-mysql

为PHP添加GD库扩展

  • gd库的安装依赖于freetype, jpegsrc及libpng,有关GD库安装详情请参见PHP开启GD库支持

编译PHP时,报configure: error: Please reinstall the BZip2 distribution错误

  • 安装bzip2bzip2-devel必不可少
    $ yum -y install bzip2 bzip2-devel

PHP添加gd扩展时,报/root/php-7.2.16/ext/gd/gd.c:75:24: 致命错误:ft2build.h:没有那个文件或目录

  • 安装依赖
    $ yum -y install freetype freetype-devel
  • 重新执行编译过程,仅重新执行make过程仍可能编译失败
    $ ./configure --with-php-config=/app/php/bin/php-config --with-png-dir=/app/libpng --with-freetype-dir=/app/freetype --with-jpeg-dir=/app/jpeg
    $ make
    $ make install

【附注】

本文来源:数字漩涡

  • 如果没有将phpize添加到全局$PATH中,将报command not found的错误,此时需要手动指定phpize路径,一般在$PHP_INSTALL_PATH/bin/下;
  • phpize用于扩展php模块,无论是通过手动编译还是通过yum软件包管理器都会生成phpize文件。该文件中记录了PHP的安装信息和相关变量,因此由于不同组织或个人编译PHP时的需求不尽相同,不能从其他地方直接拷贝phpize文件使用,而应在编译好PHP后对该文件做好备份或找到自己对应PHP版本的phpize文件;
  • 安装curl和安装php-curl是有区别的,但源码包是一样的;

 继续浏览关于 的文章

 本文最后更新于 2020/01/09 09:06:07,可能因经年累月而与现状有所差异

 引用转载请注明:数字漩涡 > 排障 > PHP常见错误解决方案

发现共鸣

如是说:选择最难的路走暗夜里看成群的星星涌来。