You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP安装PDFTron后出现Segmentation Fault问题求助

问题

严格按照PDFTron官方文档在PHP环境中安装后,运行php命令直接触发段错误:

bash-5.1# php
Segmentation fault (core dumped)

用于复现该问题的Dockerfile如下:

FROM php:7.4-fpm-alpine
# persistent / runtime deps
RUN apk add --no-cache \
        make \
        bash \
        git \
        gcc \
        swig \
        cmake \
        gcompat \
        $PHPIZE_DEPS \
    ;

# Install PDFTron
WORKDIR /var/www

RUN git clone https://github.com/PDFTron/PDFNetWrappers # Git clone the code.
# Move to where we download PDFNet.
WORKDIR /var/www/PDFNetWrappers/PDFNetC
RUN wget http://www.pdftron.com/downloads/PDFNetC64.tar.gz # Download PDFNet.
RUN tar xzvf PDFNetC64.tar.gz # Unpack PDFNet.
RUN mv PDFNetC64/Headers/ . # Move PDFNet Headers/ into place.
RUN mv PDFNetC64/Lib/ . # Move PDFNet Lib/ into place.

# Go back up /PDFNetWrappers.
WORKDIR /var/www/PDFNetWrappers

RUN mkdir Build # Create a directory to create the Makefiles in.
#  Move to that directory.
WORKDIR /var/www/PDFNetWrappers/Build
#RUN apt-get install php-dev # add php-dev for required PHP include directories
RUN cmake -D BUILD_PDFNetPHP=ON /var/www/PDFNetWrappers # Create the Makefiles with CMake.
RUN make # Build the PHP wrappers with SWIG.
RUN make install # Copy the PHP wrappers to where the samples can find them.
解决方法
  • 排查libc兼容性问题
    Alpine使用musl libc,而你下载的PDFNetC64.tar.gz是针对glibc编译的预编译包,两者不兼容会直接导致段错误。可以:

    1. 替换基础镜像为基于glibc的发行版,比如php:7.4-fpm(debian基础),并调整依赖安装命令为apt-get:
      FROM php:7.4-fpm
      RUN apt-get update && apt-get install -y --no-install-recommends \
              make \
              bash \
              git \
              gcc \
              swig \
              cmake \
              php-dev \
              && rm -rf /var/lib/apt/lists/*
      
    2. 下载PDFTron针对musl编译的版本(如果提供),替换现有下载链接。
  • 调整CMake编译参数
    如果坚持使用Alpine镜像,编译时添加musl兼容的编译选项:

    cmake -D BUILD_PDFNetPHP=ON -D CMAKE_CXX_FLAGS="-static-libstdc++ -D_GLIBCXX_USE_C99" /var/www/PDFNetWrappers
    
  • 验证扩展加载
    make install会自动将PDFTron扩展加入PHP配置,若扩展本身编译有问题,会导致PHP启动崩溃。可以临时注释PHP配置中extension=PDFNetPHP.so这类行,再运行php -v测试,若正常则说明扩展是问题根源,需重新编译或更换兼容版本。

内容的提问来源于stack exchange,提问作者GrenierJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:24:32