我正在尝试在 XAMPP 服务器上运行我的 PHP 项目,并且我正在使用用 C++ 编写的 PHP 扩展,使用 PHP-CPP 库。
这是我运行时遇到的错误
/opt/lampp/bin/php -m
PHP Warning: PHP Startup: module_nametwo: Unable to initialize module
Module compiled with module API=20210902
PHP compiled with module API=20220829
我的系统PHP版本=> 8.2.15
XAMPP PHP 版本 => 8.2.12
我的系统版本 => 2.4.52
XAMPP Apache Apache 版本 => 2.4.58
当我尝试检查系统上的 php 时:
$ sudo update-alternatives --display php
php - auto mode
link best version is /usr/bin/php8.3
link currently points to /usr/bin/php8.3
link php is /usr/bin/php
slave php.1.gz is /usr/share/man/man1/php.1.gz
/usr/bin/php8.1 - priority 81
slave php.1.gz: /usr/share/man/man1/php8.1.1.gz
/usr/bin/php8.2 - priority 82
slave php.1.gz: /usr/share/man/man1/php8.2.1.gz
/usr/bin/php8.3 - priority 83
slave php.1.gz: /usr/share/man/man1/php8.3.1.gz
这是我的 Makefile 的一部分:
NAME = module_nametwo
INI_DIR = /etc/php/8.2/mods-available/
EXTENSION_DIR = $(shell /opt/lampp/bin/php-config --extension-dir)
EXTENSION = ${NAME}.so
INI = ${NAME}.ini
all: ${OBJECTS} ${EXTENSION}
${EXTENSION}: ${OBJECTS}
${LINKER} ${LINKER_FLAGS} -o $@ ${OBJECTS} ${LINKER_DEPENDENCIES}
${OBJECTS}:
${COMPILER} ${COMPILER_FLAGS} $@ ${@:%.o=%.cpp}
install:
${CP} ${EXTENSION} ${EXTENSION_DIR}
${CP} ${INI} ${INI_DIR}
clean:
${RM} ${EXTENSION} ${OBJECTS}
API 版本 20200903 是 PHP 8.1。 API 版本 20220829 是 PHP 8.2。
您的问题是由于使用一种版本的 PHP 并加载为不同版本编译的 PHP 扩展而引起的。
module_nametwo 是为 PHP 8.1 编译的。将模块更新到 PHP 8.2 兼容版本或降级/切换到 PHP 8.1。
您在问题中显示了 Makefile。但是,仅此并不能指定您用于包含、库等的 PHP 开发包。PHP 开发包必须与您正在编译并运行模块(扩展)的 PHP 版本相匹配。