php: security bump to version 5.3.13 and enhance

Bump php to version 5.3.13 to solve multiple CVEs.
The 5.2 series is no longer maintained.

The PCRE and SPL extensions are no longer optional.
Reflection is no longer optional either.

Ncurses was spun out to PECL.

Add a ton of new extensions and give more granular options on others
(like the libxml2-based ones).

The FastCGI option no longer exists, it's always on as long as CGI is.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Gustavo Zacarias
2012-05-21 01:17:54 +00:00
committed by Peter Korsgaard
parent 360f0e40f0
commit aeb9350cfb
5 changed files with 436 additions and 273 deletions

View File

@@ -4,53 +4,59 @@
#
#############################################################
PHP_VERSION = 5.2.17
PHP_VERSION = 5.3.13
PHP_SOURCE = php-$(PHP_VERSION).tar.bz2
PHP_SITE = http://www.php.net/distributions
PHP_INSTALL_STAGING = YES
PHP_INSTALL_STAGING_OPT = INSTALL_ROOT=$(STAGING_DIR) install
PHP_INSTALL_TARGET_OPT = INSTALL_ROOT=$(TARGET_DIR) install
PHP_LIBTOOL_PATCH = NO
PHP_CONF_OPT = --mandir=/usr/share/man \
--infodir=/usr/share/info \
--disable-all \
--without-pear \
--with-config-file-path=/etc \
--localstatedir=/var \
--disable-rpath
PHP_CFLAGS = $(TARGET_CFLAGS)
ifneq ($(BR2_PACKAGE_PHP_CLI),y)
PHP_CONF_OPT += --disable-cli
else
PHP_CONF_OPT += --enable-cli
# Workaround for non-IPv6 uClibc toolchain
ifeq ($(BR2_TOOLCHAIN_BUILDROOT)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_CTNG_uClibc),y)
ifneq ($(BR2_INET_IPV6),y)
PHP_CFLAGS += -DHAVE_DEPRECATED_DNS_FUNCS
endif
endif
ifneq ($(BR2_PACKAGE_PHP_CGI),y)
PHP_CONF_OPT += --disable-cgi
else
PHP_CONF_OPT += --enable-cgi
ifeq ($(BR2_PACKAGE_PHP_FASTCGI),y)
PHP_CONF_OPT += --enable-fastcgi
endif
endif
PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_CLI),,--disable-cli)
PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_CGI),,--disable-cgi)
### Extensions
ifeq ($(BR2_PACKAGE_PHP_EXT_SOCKETS),y)
PHP_CONF_OPT += --enable-sockets
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_POSIX),y)
PHP_CONF_OPT += --enable-posix
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SPL),y)
PHP_CONF_OPT += --enable-spl
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SESSION),y)
PHP_CONF_OPT += --enable-session
endif
PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_EXT_SOCKETS),--enable-sockets) \
$(if $(BR2_PACKAGE_PHP_EXT_POSIX),--enable-posix) \
$(if $(BR2_PACKAGE_PHP_EXT_SESSION),--enable-session) \
$(if $(BR2_PACKAGE_PHP_EXT_HASH),--enable-hash) \
$(if $(BR2_PACKAGE_PHP_EXT_DOM),--enable-dom) \
$(if $(BR2_PACKAGE_PHP_EXT_SIMPLEXML),--enable-simplexml) \
$(if $(BR2_PACKAGE_PHP_EXT_SOAP),--enable-soap) \
$(if $(BR2_PACKAGE_PHP_EXT_WDDX),--enable-wddx) \
$(if $(BR2_PACKAGE_PHP_EXT_XML),--enable-xml) \
$(if $(BR2_PACKAGE_PHP_EXT_XMLREADER),--enable-xmlreader) \
$(if $(BR2_PACKAGE_PHP_EXT_XMLWRITER),--enable-xmlwriter) \
$(if $(BR2_PACKAGE_PHP_EXT_EXIF),--enable-exif) \
$(if $(BR2_PACKAGE_PHP_EXT_FTP),--enable-ftp) \
$(if $(BR2_PACKAGE_PHP_EXT_JSON),--enable-json) \
$(if $(BR2_PACKAGE_PHP_EXT_TOKENIZER),--enable-tokenizer) \
$(if $(BR2_PACKAGE_PHP_EXT_PCNTL),--enable-pcntl) \
$(if $(BR2_PACKAGE_PHP_EXT_SHMOP),--enable-shmop) \
$(if $(BR2_PACKAGE_PHP_EXT_SYSVMSG),--enable-sysvmsg) \
$(if $(BR2_PACKAGE_PHP_EXT_SYSVSEM),--enable-sysvsem) \
$(if $(BR2_PACKAGE_PHP_EXT_SYSVSHM),--enable-sysvshm) \
$(if $(BR2_PACKAGE_PHP_EXT_ZIP),--enable-zip) \
$(if $(BR2_PACKAGE_PHP_EXT_CTYPE),--enable-ctype) \
$(if $(BR2_PACKAGE_PHP_EXT_FILTER),--enable-filter) \
$(if $(BR2_PACKAGE_PHP_EXT_CALENDAR),--enable-calendar) \
$(if $(BR2_PACKAGE_PHP_EXT_FILENIFO),--enable-fileinfo) \
$(if $(BR2_PACKAGE_PHP_EXT_BCMATH),--enable-bcmath)
ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y)
PHP_CONF_OPT += --with-openssl=$(STAGING_DIR)/usr
@@ -58,16 +64,14 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y)
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y)
PHP_CONF_OPT += --enable-libxml \
--with-libxml-dir=${STAGING_DIR}/usr \
--enable-xml \
--enable-xmlreader \
--enable-xmlwriter
PHP_CONF_OPT += --enable-libxml --with-libxml-dir=${STAGING_DIR}/usr
PHP_DEPENDENCIES += libxml2
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SIMPLEXML),y)
PHP_CONF_OPT += --enable-simplexml
ifeq ($(BR2_PACKAGE_PHP_EXT_XMLRPC),y)
PHP_CONF_OPT += --with-xmlrpc \
$(if $(BR2_PACKAGE_LIBICONV),--with-iconv-dir=$(STAGING_DIR)/usr)
PHP_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)
endif
ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),)
@@ -75,70 +79,35 @@ ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),)
PHP_DEPENDENCIES += zlib
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_EXIF),y)
PHP_CONF_OPT += --enable-exif
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_FTP),y)
PHP_CONF_OPT += --enable-ftp
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y)
PHP_CONF_OPT += --with-gettext=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += $(if $(BR2_NEEDS_GETTEXT),gettext)
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_ICONV),y)
ifeq ($(BR2_PACKAGE_LIBICONV),y)
PHP_CONF_OPT += --with-iconv=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += libiconv
else
PHP_CONF_OPT += --with-iconv
endif
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y)
PHP_CONF_OPT += --enable-intl --with-icu-dir=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += icu
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)
PHP_CONF_OPT += --with-gmp=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += gmp
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_JSON),y)
PHP_CONF_OPT += --enable-json
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y)
PHP_CONF_OPT += --with-readline=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += readline
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_NCURSES),y)
PHP_CONF_OPT += --with-ncurses=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += ncurses
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_PCNTL),y)
PHP_CONF_OPT += --enable-pcntl
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVMSG),y)
PHP_CONF_OPT += --enable-sysvmsg
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSEM),y)
PHP_CONF_OPT += --enable-sysvsem
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSHM),y)
PHP_CONF_OPT += --enable-sysvshm
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_ZIP),y)
PHP_CONF_OPT += --enable-zip
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_FILTER),y)
PHP_CONF_OPT += --enable-filter
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_CALENDAR),y)
PHP_CONF_OPT += --enable-calendar
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_PCRE),y)
PHP_CONF_OPT += --with-pcre-regex
endif
### Legacy sqlite2 support
ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y)
PHP_CONF_OPT += --with-sqlite
@@ -150,16 +119,22 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE_UTF8),y)
endif
endif
### Native MySQL extensions
ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQL),y)
PHP_CONF_OPT += --with-mysql=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += mysql_client
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y)
PHP_CONF_OPT += --with-mysqli=$(STAGING_DIR)/usr/bin/mysql_config
PHP_DEPENDENCIES += mysql_client
endif
### PDO
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y)
PHP_CONF_OPT += --enable-pdo
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y)
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE_EXTERNAL),y)
PHP_CONF_OPT += --with-pdo-sqlite=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += sqlite
else
PHP_CONF_OPT += --with-pdo-sqlite
endif
PHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION
ifneq ($(BR2_LARGEFILE),y)
PHP_CFLAGS += -DSQLITE_DISABLE_LFS
@@ -171,6 +146,50 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y)
endif
endif
### Use external PCRE if it's available
ifeq ($(BR2_PACKAGE_PCRE),y)
PHP_CONF_OPT += --with-pcre-regex=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += pcre
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_CURL),y)
PHP_CONF_OPT += --with-curl=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += libcurl
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_XSL),y)
PHP_CONF_OPT += --with-xsl=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += libxslt
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_BZIP2),y)
PHP_CONF_OPT += --with-bz2=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += bzip2
endif
### DBA
ifeq ($(BR2_PACKAGE_PHP_EXT_DBA),y)
PHP_CONF_OPT += --enable-dba
ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_CDB),y)
PHP_CONF_OPT += --without-cdb
endif
ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_FLAT),y)
PHP_CONF_OPT += --without-flatfile
endif
ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_INI),y)
PHP_CONF_OPT += --without-inifile
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_DBA_DB4),y)
PHP_CONF_OPT += --with-db4=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += berkeleydb
endif
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y)
PHP_CONF_OPT += --with-snmp=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += netsnmp
endif
# Fixup prefix= and exec_prefix= in php-config
define PHP_FIXUP_PHP_CONFIG
$(SED) 's%^prefix="/usr"%prefix="$(STAGING_DIR)/usr"%' \
@@ -185,7 +204,9 @@ define PHP_INSTALL_FIXUP
rm -f $(TARGET_DIR)/usr/bin/phpize
rm -f $(TARGET_DIR)/usr/bin/php-config
if [ ! -f $(TARGET_DIR)/etc/php.ini ]; then \
$(INSTALL) -m 0755 $(BR2_PACKAGE_PHP_CONFIG) $(TARGET_DIR)/etc/php.ini; fi
$(INSTALL) -m 0755 $(PHP_DIR)/php.ini-production \
$(TARGET_DIR)/etc/php.ini; \
fi
endef
PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FIXUP