相关文章推荐

需求背景:公司项目有个功能需要导出花名册,有个客户里的员工有几万名,每次导出需要很久且接口不稳定经常会报504。继而开发优化需要用到下xlswriter这个扩展。

先上官方地址:https://github.com/viest/php-ext-xlswriter

由于公司的环境是docker-alpine,所以本想着更换下源,使用添加命令即可

apk add php7-xlswriter

结果发现 xlswriter文档中部署的源只有

# 添加官方 Testing 源
# http://nl.alpinelinux.org/alpine/edge/testing

尝试添加源以后,再装扩展,发现一直不能识别到扩展路径。

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php7/modules/xlswriter.so' - Error relocating /usr/lib/php7/modules/xlswriter.so: zend_wrong_parameter_type_error: symbol not found in Unknown on line 0

多方资料查询无果,加入群里问了下作者问题,作者说apk的源没有更新,可通过pecl编译,安装无奈最后选择编译安装了。

Pecl编译安装

1.pecl工具安装:

cd /bin/
wget http://pear.php.net/go-pear.phar -O go-pear.php
php go-pear.php
##回车默认安装

2.相关扩展的安装

apk update
apk add autoconf \
        gcc      \
        g++      \
        zlib-dev

3.尝试使用pecl安装xlswriter

pecl install xlswriter会出现错误提示,但是不要紧xlswriter 的安装包已经下载下来了
路径在/tmp/pear/install/

4.编译安装

解压 tar -zxvf xlswriter.tgz
cd xlswriter
phpize && ./configure --with-php-config=/usr/bin/php-config7 --enable-reader
这里会出现一个提示 phpize :找不到命令
这里需要安装一个扩展 php7-dev
使用命令apk add php7-dev安装,安装后编译的命令还不可以直接用,在/usr/bin找到phpize7 ,将其复制一个为phpize

5.开始编译

phpize && ./configure --with-php-config=/usr/bin/php-config7 --enable-reader

编译后执行make && make install 会提示 make找不到命令

apk add make

然后再次运行make && make install,编译完成。

6.配置扩展文件

在cd /usr/lib/php7/modules/查看xlswriter.so文件是否存在
确认存在 cd /etc/php7/conf.d
编辑扩展文件 vi xlswriter.ini
extension = xlswriter.so

7.运行 php -m |grep xlswriter 确认是否安装上

/app # php -m |grep xlswriter
xlswriter
 

在我编译安装后作者说,两个基础包一样的镜像,都安装一下zlib扩展,然后在另一个镜像里编译扩展,把编译好的so动态库复制过去就可以完成安装

这句话的意思两个相同的基础镜像1和2,在镜像1中编译之前安装zlib扩展,编译成功以后的xlswriter.so 可以复制在镜像2中,只需执行上面的第六步骤配置扩展文件即可完成扩展的安装

需求背景:公司项目有个功能需要导出花名册,有个客户里的员工有几万名,每次导出需要很久且接口不稳定经常会报504。继而开发优化需要用到下xlswriter这个扩展。先上官方地址:https://github.com/viest/php-ext-xlswriter开始部署由于公司的环境是docker-alpine,所以本想着更换下源,使用添加命令即可apk add php7-xlswriter结果发现 xlswriter文档中部署的源只有# 添加官方 Testing 源# http://nl.
php-alpine 安装扩展下载基础镜像安装依赖Pecl编译安装尝试使用pecl安装rdkafka编译安装 下载基础镜像 docker pull hyperf/hyperf:8.1-alpine-v3.15-base 安装依赖 apk add --no-cache libpng-dev freetype-dev libjpeg-turbo-dev libwebp-dev libxpm-dev \ zlib-dev \
Alpine Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk,可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。
使用中文文档:https://xlswriter-docs.viest.me/zh-cn/an-zhuang windows下载地址:https://github.com/viest/php-ext-xlswriter/releases 注意:window 注意版本、是否线程安全、操作系统位数.github: https://github.com/viest/php-ext-xlswriterlinux下安装:...
##回车默认安装 apk add autoconf dpkg-dev file g++ gcc libc-dev make php8-dev php8-pear re2c pcre pcre-dev ln-s /usr/bin/phpize8 /usr/local/bin/phpize \ ln-s /usr/bin/php
首先 alpine 非常的小,安装上了bash 之后也才 5mb。 golang 不需要其他的依赖,想看看是不是能在 alpine 上面跑呢。 搭建一个golang的环境,而不是把golang的环境放到alpine上面。 2,首先在centos 搭建golang环境 https://g...
/app/startup.sh: line 5: ./abc : not found 由于alpine镜像使用的是musl libc而不是gnu libc,/lib64/ 是不存在的。但他们是兼容的,可以创建个软连接过去试试! 这种情况是因为动态链接库位置错误导致的,alpine镜像使用的是musl libc而不是gun libc. alpine系统默认是没有pecl的,只能先安装pecl curl -o go-pear.php http://pear.php.net/go-pear.phar php go-pear.php #一直回车就行 docker run -d -p 8080:80 --name my-php-apache -v /path/to/local/web/files:/var/www/html php:7.4-apache 其中,`-d`表示在后台运行容器,`-p`表示将容器内部的80端口映射到主机的8080端口,`--name`表示容器的名称,`-v`表示将本地目录挂载到容器内部的/var/www/html目录下。 4. 访问Web应用 在浏览器中输入`http://localhost:8080`,即可访问Web应用。 注意事项: - 镜像版本可以根据需要进行更改。 - 挂载本地目录时,需要将`/path/to/local/web/files`替换为实际的本地目录路径。 Centos7系统安装yum遇到的问题failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try.
 
推荐文章