Using php-embed in custom module

Marcelo Verteramo Pérsico <[email protected]>
Newsgroups gmane.comp.apache.user
Message-ID <AS4P191MB2109D21EA8B5E8DDA7D3CCB89C1C2@AS4P191MB2109.EURP191.PROD.OUTLOOK.COM>
Hello.

I am developing an Apache module that, upon receiving an HTTP request, reads a file in a custom language where a series of request handlers are declared. Once the file has been parsed and a handler has been found, the source code it contains is obtained, which is in PHP; and it tries to load the PHP Embed header, but I'm getting this error message:

> apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/rst.load: Cannot load /usr/lib/apache2/modules/mod_rst.so into server: /usr/lib/apache2/modules/mod_rst.so: undefined symbol: php_embed_shutdown

In principle everything is correct:

ldd /usr/lib/apache2/modules/mod_rest.so
linux-vdso.so.1 (0x00007ffeef78a000)
libphp.so => ​​/home/user/php-embed/libs/libphp.so (0x00007fd10fb2b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd10f93e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd10f85f000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fd10f6b3000)
libsqlite3.so.0 => /lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fd10f554000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd1110d1000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007fd10f354000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fd10f335000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fd10f306000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007fd10d534000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd10d31a000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd10d2fa000)

nm -D /home/user/php-embed/libs/libphp.so | grep php_embed
00000000007ea477 T php_embed_init
000000000157eac0 D php_embed_module
00000000007ea5aa T php_embed_shutdown

I'm working on WSL Debian 12 Bookworm, I've downloaded the php-embed and libphp-embed packages, maintained by the Debian PHP and PHP PEAR Maintenance teams, and as it still didn't work, I've downloaded and compiled the PHP 8.4.1 source code with the --enabled-embed flag, but I still get the same error.

I must add that, both with the php-embed and libphp-embed packages, and with the source code compiled by myself, I have compiled a basic program with the PHP Embed library and I have had no problems, the output is correct, the basic example comes from this repository: https://github.com/KapitanOczywisty/PHP_embed_docs/blob/main/embed.md.

I have searched a lot, although I probably have not found the correct search terms, since the words “Apache, module and PHP” together flood the results, surely hiding this specific case. I could conclude that the PHP Embed API works correctly, except when I try to use it in an Apache module. I understand that you could tell me to go to the PHP channels, you are not wrong, but I thought it appropriate to expose my problem here in case someone has had this experience.

Thank you very much for reading, greetings.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.