首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Saxon/C PHP扩展名(ext-saxon/c vs ext-saxonc)

Saxon/C PHP扩展名(ext-saxon/c vs ext-saxonc)
EN

Stack Overflow用户
提问于 2020-04-24 16:15:25
回答 1查看 95关注 0票数 1

我已经在PHP-FPM docker镜像中构建了Saxon/C PHP扩展。当前扩展名为ext-saxon/c,而PhpStormcomposer期望扩展名为ext-saxonc。是否可以在Saxon构建过程或PhpStorm中对其进行更改/覆盖?

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

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

但是现在,我得到的消息是我的composer.json文件中缺少ext-saxonc扩展。

在我的composer.json文件中,我可以执行以下操作:

代码语言:javascript
运行
复制
"require": {
    "ext-saxon/c": "*",
}

但我无法执行以下操作,因为该扩展未被识别为已安装。

代码语言:javascript
运行
复制
"require": {
    "ext-saxonc": "*",
}

我用于构建扩展的docker代码:

代码语言:javascript
运行
复制
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/*;
EN

回答 1

Stack Overflow用户

发布于 2020-04-25 22:01:32

Saxon.C.API\php_saxon.h的第147行(对于PHP5,也可以是Saxon.C.API\php5_saxon.h )从:

代码语言:javascript
运行
复制
#define PHP_SAXON_EXTNAME "Saxon/C"

代码语言:javascript
运行
复制
#define PHP_SAXON_EXTNAME "SaxonC"

使用

代码语言:javascript
运行
复制
sed -i 's/#define PHP_SAXON_EXTNAME  "Saxon\/C"/#define PHP_SAXON_EXTNAME  "SaxonC"/g' php_saxon.h; \

新的docker代码:

代码语言:javascript
运行
复制
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/*;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61403997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档