Re: [RFC] Module API Introspection
Hi,
On Fri, 2014-01-24 at 15:29 +0100, Julien Pauli wrote:
> > I don't have a better idea than something like a shell script doing
> > strings xdebug.so | grep API -- which obviously is no good idea
> > either, but maybe somebody is smarter than me.
>
> That's what we ended telling to attendees : we have no way in PHP
> actually to check the API of an extension, except by trying to load
> it.
Trying to load it will actually tell the user *exactly* the same as this
new option, it will either
* load it successfully,
* report PHP's and the extensions API numbers or
* result in a symbol lookup error
Contrary to the patch loading it will mind php.ini's extension dir.
Right now
php --modinfo=foo.so
and
php -m -dextension=foo.so
will load different files (--modinfo's behavior can be seen as correct,
but this difference is confusing)
> However, GNU tools playing with ELF format are a global Unix solution
> working, but not coming from PHP obviously.
>
> The only safe thing we could do, is wrapping libelf and play with it.
> Somehow dirty and adds a new dependency :-p
Another crazy idea I just had was along those lines:
#define ZEND_GET_MODULE(name) \
BEGIN_EXTERN_C()\
ZEND_DLEXPORT zend_module_entry *get_module(void) { return &name##_module_entry; }\
+ ZEND_DLEXPORT int this_extension_was_compiled_for_ ## PHP_VERSION() {return 1;} \
END_EXTERN_C()
and then a shell script greping "this_extension_was_compiled_for" in the
ldd output. This exact patch obviously won't work (PHP define in zend
header, points in C function name, ...) but maybe somebody has more
creativity for that.
johannes
Thread (11 messages)