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

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

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

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

在我的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/*;发布于 2020-04-25 22:01:32
将Saxon.C.API\php_saxon.h的第147行(对于PHP5,也可以是Saxon.C.API\php5_saxon.h )从:
#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/*;https://stackoverflow.com/questions/61403997
复制相似问题