php安装redis时ERROR: `phpize' failed

发布于 2022-09-05 23:00:07 字数 1372 浏览 7 评论 0

错误信息

running: phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

ERROR: `phpize' failed

Dockerfile文件

FROM php:5.6-fpm-alpine
RUN pecl install -o -f redis \
&&  rm -rf /tmp/pear \
&&  echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini

问题描述

  1. 查看官方Dockerfile中是有autoconf的, 为什么我FROM之后来安装redis却说没有autoconf ?
  2. 通过查到的资料以下方式可以安装
FROM php:5.6-fpm-alpine
RUN apk add --no-cache --virtual .build-deps \
    g++ make autoconf
RUN pecl install -o -f redis \
&&  rm -rf /tmp/pear \
&&  echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
RUN apk del --purge .build-deps                                  

但是通过上面安装扩展之后构建的镜像相差了100M.

相关资料

stackoverflow-how-to-install-php-redis

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

青春有你 2022-09-12 23:00:07

PECL安装方式

RUN set -xe \
    && apk add --no-cache --update --virtual .phpize-deps $PHPIZE_DEPS \
    && pecl install -o -f redis  \
    && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini
    && rm -rf /usr/share/php \
    && rm -rf /tmp/* \
    && apk del  .phpize-deps

@化而为鸟 所说的一样安装后就被删除了, 所以再安装其它扩展时也要重新安装编译环境.

tip: 把不需要的一定要记得删除不然就会导致镜像臃肿.

相关资料

docker-php添加redis扩展
docker-php添加memcached扩展

冬天旳寂寞 2022-09-12 23:00:07

docker 镜像最好还是用官方,或自己弄吧,别人的首先是满足别人的需求,可能有些东西不是你要的

溺渁∝ 2022-09-12 23:00:07

首先,官方的Dockerfile确实是有autoconf的,但它在安装完后,会把所有的build时才需要的包都删除掉(请看官方Dockerfile,有apk del),所以你From的官方的image是没有autoconf的;
其次,你的镜像大,是由于docker镜像是分层的,每一次的Dockerfile命令都会形成记录,类似git、svn等版本控制,每一次提交都会增大版本库记录,再有可能是pecl安装方式的问题,改成源码包应该会小一些,如果你想要达到最小的效果,你可以在官方Dockerfile上进行修改,以减小Dockerfile的命令的使用次数,但这种方式不是很好调试,且每次docker build如果Dockerfile中前面的部分有过修改,耗时可能会很长,如果目录只是测试的话,大上百八十M也无所谓

七堇年 2022-09-12 23:00:07

如果你只是单纯的想安装 php 的 redis 扩展,没必要使用 docker,下面是我以前写的笔记,你可以看看

1. windows 下 安装 redis 的 php 扩展
  • 下载 php_redis.dll
  • 下载完成后将文件 php_redis.dll 移动到 php 的扩展文件夹 ~/bin/ext/ 下
  • 修改 php.ini 文件
extension = php_redis.dll
2. Ubuntu 下安装 redis 的 php 扩展
cd /software/
wget http://github.com/nicolasff/phpredis/archive/master.zip
unzip master.zip
cd phpredis-master
/path/to/php/bin/phpize

如果出现以下错误信息:

Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.

则说明服务器上没有安装 Autoconf,安装步骤如下:

1. 安装m4
cd /usr/src
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
tar -zvxf m4-1.4.9.tar.gz
cd m4-1.4.9/
./configure && make && make install
            
2. 安装autoconf
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
tar -zvxf autoconf-2.62.tar.gz
cd autoconf-2.62/
./configure && make && make install

安装完成后执行:

./configure --with-php-config=/path/to/php/bin/php-config
make
make install

此时编译完成的 redis.so 会默认保存到 /path/to/php/lib/php/extensions/, 修改 php.ini 文件

extension = redis.so
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文