[php-maint] Bug#612743: php5: PHP is compiled with LFS support, but this can not be detected by extensions

Derick Rethans debian at derickrethans.nl
Thu Feb 10 11:29:32 UTC 2011


Package: php5
Severity: normal
Tags: lfs

Hi!

I'm the author of several PHP extensions, and a user asked me to compile a
binary for him.

I've compiled the extension using a stock PHP install, and noticed that
though the extension loaded fine on Debian and Ubuntu, it did not actually
work. The exact same source code compiled on the Debian and Ubuntu systems
worked fine.

I've tracked this down to issues with reading files through PHP's
streams layer. What I strongly suspect here is that Debian's LFS patch changes
the size of the php_stream structure in a subtle way. However, from a compiled
binary I have no way of detecting whether the LFS patch was actually applied.
This makes it close to impossible to reject my extension from being loaded
and/or tell them to use a LFS-compiled version that I obviously can also 
provide. 

If you, as Debian PHP Maintainer, find it necessary to break PHP's default
ABI/API compatibility; could you at least reflect this in the API number so
that your pre-compiled PHP refuses to load an extension compiled with the
standard/a different ABI? You already add +lfs to the extension dir's default,
so it should be easy enough. For example, something like:

--- Zend/zend_build.h.orig	2011-02-10 11:26:12.000000000 +0000
+++ Zend/zend_build.h	2011-02-10 11:27:03.000000000 +0000
@@ -41,6 +41,10 @@
 #endif
 
 /* for private applications */
+#if _FILE_OFFSET_BITS = 64
+#define ZEND_BUILD_EXTRA ",LFS"
+#else
 #define ZEND_BUILD_EXTRA 
+#endif
 
 #endif

cheers,
Derick

-- System Information:
Debian Release: squeeze/sid
  APT prefers maverick-updates
  APT policy: (500, 'maverick-updates'), (500, 'maverick-security'), (500, 'maverick')
Architecture: i386 (i686)

Kernel: Linux 2.6.35-25-virtual (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash





More information about the pkg-php-maint mailing list