SaxonC的PHP扩展名(ext-saxonc与ext-saxonc的比较)。

问题描述 投票:1回答:1

我在PHP-FPM docker镜像中构建了SaxonC PHP扩展。当前的扩展名是 ext-saxon/cPhpStormcomposer 希望扩展名是 ext-saxonc. 能否在Saxon的构建过程或PhpStorm中更改覆盖?

enter image description here

当我在PhpStorm中使用这些代码时,我得到以下错误。

enter image description here

为了让PhpStorm知道Saxon扩展,我必须在PHP运行时设置中手动启用它,因为解释器不会自动识别它。

enter image description here

但现在,我得到的信息是 ext-saxonc 我的PHP扩展不见了 composer.json 文件。

enter image description here

在我的 composer.json 文件,我可以做到以下几点。

"require": {
    "ext-saxon/c": "*",
}

但我不能做下面的事情, 因为该扩展名不被识别为安装。

"require": {
    "ext-saxonc": "*",
}

我构建扩展的docker代码。

FROM php:7.4.5-fpm

ARG saxon='libsaxon-HEC-setup64-v1.2.1'
RUN set -eux; \
    apt-get update && apt-get install -y --no-install-recommends wget; \
    cd /tmp && wget --quiet https://www.saxonica.com/saxon-c/${saxon}.zip; \
    unzip ${saxon}.zip; \
    ./${saxon} -batch -dest /tmp/saxon; \
    cp /tmp/saxon/libsaxonhec.so /usr/lib/; \
    cp -r /tmp/saxon/rt /usr/lib; \
    ldconfig; \
    cd /tmp/saxon/Saxon.C.API/; \
    phpize; \
    ./configure --enable-saxon; \
    make -j$(nproc); \
    make install; \
    docker-php-ext-enable saxon; \
    rm -rf /tmp/${saxon} /tmp/${saxon}.zip /tmp/saxon /var/lib/apt/lists/*;
php phpstorm saxon-c
1个回答
1
投票

更改147行的 Saxon.C.API\php_saxon.h (或可能 Saxon.C.API\php5_saxon.h 为PHP5)从。

#define PHP_SAXON_EXTNAME "Saxon/C"

#define PHP_SAXON_EXTNAME "SaxonC"

使用

sed -i 's/#define PHP_SAXON_EXTNAME  "Saxon\/C"/#define PHP_SAXON_EXTNAME  "SaxonC"/g' php_saxon.h; \

新的docker代码。

FROM php:7.4.5-fpm

ARG saxon='libsaxon-HEC-setup64-v1.2.1'
RUN set -eux; \
    apt-get update && apt-get install -y --no-install-recommends wget; \
    cd /tmp && wget --quiet https://www.saxonica.com/saxon-c/${saxon}.zip; \
    unzip ${saxon}.zip; \
    ./${saxon} -batch -dest /tmp/saxon; \
    cp /tmp/saxon/libsaxonhec.so /usr/lib/; \
    cp -r /tmp/saxon/rt /usr/lib; \
    ldconfig; \
    cd /tmp/saxon/Saxon.C.API/; \
    sed -i 's/#define PHP_SAXON_EXTNAME  "Saxon\/C"/#define PHP_SAXON_EXTNAME  "saxonc"/g' php_saxon.h; \
    phpize; \
    ./configure --enable-saxon; \
    make -j$(nproc); \
    make install; \
    docker-php-ext-enable saxon; \
    rm -rf /tmp/${saxon} /tmp/${saxon}.zip /tmp/saxon /var/lib/apt/lists/*;
© www.soinside.com 2019 - 2024. All rights reserved.