summaryrefslogtreecommitdiff
path: root/lang/php56/files
diff options
context:
space:
mode:
Diffstat (limited to 'lang/php56/files')
-rw-r--r--lang/php56/files/extra-patch-php-fpm-ipv6215
-rw-r--r--lang/php56/files/patch-TSRM_threads.m411
-rw-r--r--lang/php56/files/patch-Zend__zend.h11
-rw-r--r--lang/php56/files/patch-Zend_zend_list.c38
-rw-r--r--lang/php56/files/patch-Zend_zend_list.h24
-rw-r--r--lang/php56/files/patch-acinclude.m445
-rw-r--r--lang/php56/files/patch-configure.in53
-rw-r--r--lang/php56/files/patch-ext_standard_image.c50
-rw-r--r--lang/php56/files/patch-ext_zlib_config0.m411
-rw-r--r--lang/php56/files/patch-main__php_config.h.in12
-rw-r--r--lang/php56/files/patch-sapi_apache2filter_config.m411
-rw-r--r--lang/php56/files/patch-sapi_apache2handler_config.m411
-rw-r--r--lang/php56/files/patch-sapi_fpm_Makefile.frag12
-rw-r--r--lang/php56/files/patch-sapi_fpm_config.m420
-rw-r--r--lang/php56/files/patch-sapi_fpm_php-fpm.conf.in11
-rw-r--r--lang/php56/files/php-fpm.in43
16 files changed, 578 insertions, 0 deletions
diff --git a/lang/php56/files/extra-patch-php-fpm-ipv6 b/lang/php56/files/extra-patch-php-fpm-ipv6
new file mode 100644
index 000000000000..ac00a11867f9
--- /dev/null
+++ b/lang/php56/files/extra-patch-php-fpm-ipv6
@@ -0,0 +1,215 @@
+diff --git a/sapi/fpm/fpm/fpm_sockets.c b/sapi/fpm/fpm/fpm_sockets.c
+index e056565..da14d63 100644
+--- a/sapi/fpm/fpm/fpm_sockets.c
++++ b/sapi/fpm/fpm/fpm_sockets.c
+@@ -39,29 +39,6 @@ struct listening_socket_s {
+
+ static struct fpm_array_s sockets_list;
+
+-static int fpm_sockets_resolve_af_inet(char *node, char *service, struct sockaddr_in *addr) /* {{{ */
+-{
+- struct addrinfo *res;
+- struct addrinfo hints;
+- int ret;
+-
+- memset(&hints, 0, sizeof(hints));
+- hints.ai_family = AF_INET;
+- ret = getaddrinfo(node, service, &hints, &res);
+-
+- if (ret != 0) {
+- zlog(ZLOG_ERROR, "can't resolve hostname '%s%s%s': getaddrinfo said: %s%s%s\n",
+- node, service ? ":" : "", service ? service : "",
+- gai_strerror(ret), ret == EAI_SYSTEM ? ", system error: " : "", ret == EAI_SYSTEM ? strerror(errno) : "");
+- return -1;
+- }
+-
+- *addr = *(struct sockaddr_in *) res->ai_addr;
+- freeaddrinfo(res);
+- return 0;
+-}
+-/* }}} */
+-
+ enum { FPM_GET_USE_SOCKET = 1, FPM_STORE_SOCKET = 2, FPM_STORE_USE_SOCKET = 3 };
+
+ static void fpm_sockets_cleanup(int which, void *arg) /* {{{ */
+@@ -98,14 +75,23 @@ static void fpm_sockets_cleanup(int which, void *arg) /* {{{ */
+ }
+ /* }}} */
+
++static void *fpm_get_in_addr(struct sockaddr *sa) /* {{{ */
++{
++ if (sa->sa_family == AF_INET) {
++ return &(((struct sockaddr_in*)sa)->sin_addr);
++ }
++
++ return &(((struct sockaddr_in6*)sa)->sin6_addr);
++}
++/* }}} */
++
+ static int fpm_sockets_hash_op(int sock, struct sockaddr *sa, char *key, int type, int op) /* {{{ */
+ {
+ if (key == NULL) {
+ switch (type) {
+ case FPM_AF_INET : {
+- struct sockaddr_in *sa_in = (struct sockaddr_in *) sa;
+- key = alloca(sizeof("xxx.xxx.xxx.xxx:ppppp"));
+- sprintf(key, "%u.%u.%u.%u:%u", IPQUAD(&sa_in->sin_addr), (unsigned int) ntohs(sa_in->sin_port));
++ key = alloca(INET6_ADDRSTRLEN);
++ inet_ntop(sa->sa_family, fpm_get_in_addr(sa), key, sizeof key);
+ break;
+ }
+
+@@ -254,11 +240,14 @@ enum fpm_address_domain fpm_sockets_domain_from_address(char *address) /* {{{ */
+
+ static int fpm_socket_af_inet_listening_socket(struct fpm_worker_pool_s *wp) /* {{{ */
+ {
+- struct sockaddr_in sa_in;
++ struct addrinfo hints, *servinfo, *p;
+ char *dup_address = strdup(wp->config->listen_address);
+- char *port_str = strchr(dup_address, ':');
++ char *port_str = strrchr(dup_address, ':');
+ char *addr = NULL;
++ int addr_len;
+ int port = 0;
++ int sock;
++ int status;
+
+ if (port_str) { /* this is host:port pair */
+ *port_str++ = '\0';
+@@ -274,23 +263,35 @@ static int fpm_socket_af_inet_listening_socket(struct fpm_worker_pool_s *wp) /*
+ return -1;
+ }
+
+- memset(&sa_in, 0, sizeof(sa_in));
+-
+- if (addr) {
+- sa_in.sin_addr.s_addr = inet_addr(addr);
+- if (sa_in.sin_addr.s_addr == INADDR_NONE) { /* do resolve */
+- if (0 > fpm_sockets_resolve_af_inet(addr, NULL, &sa_in)) {
+- return -1;
+- }
+- zlog(ZLOG_NOTICE, "address '%s' resolved as %u.%u.%u.%u", addr, IPQUAD(&sa_in.sin_addr));
++ // strip brackets from address for getaddrinfo
++ if (addr != NULL) {
++ addr_len = strlen(addr);
++ if (addr[0] == '[' && addr[addr_len - 1] == ']') {
++ addr[addr_len - 1] = '\0';
++ addr++;
+ }
+- } else {
+- sa_in.sin_addr.s_addr = htonl(INADDR_ANY);
+ }
+- sa_in.sin_family = AF_INET;
+- sa_in.sin_port = htons(port);
++
++ memset(&hints, 0, sizeof hints);
++ hints.ai_family = AF_UNSPEC;
++ hints.ai_socktype = SOCK_STREAM;
++
++ if ((status = getaddrinfo(addr, port_str, &hints, &servinfo)) != 0) {
++ zlog(ZLOG_ERROR, "getaddrinfo: %s\n", gai_strerror(status));
++ return -1;
++ }
++
+ free(dup_address);
+- return fpm_sockets_get_listening_socket(wp, (struct sockaddr *) &sa_in, sizeof(struct sockaddr_in));
++
++ for (p = servinfo; p != NULL; p = p->ai_next) {
++ if ((sock = fpm_sockets_get_listening_socket(wp, p->ai_addr, p->ai_addrlen)) != -1) {
++ break;
++ }
++ }
++
++ freeaddrinfo(servinfo);
++
++ return sock;
+ }
+ /* }}} */
+
+diff --git a/sapi/fpm/fpm/fpm_sockets.h b/sapi/fpm/fpm/fpm_sockets.h
+index 121c016..446c78e 100644
+--- a/sapi/fpm/fpm/fpm_sockets.h
++++ b/sapi/fpm/fpm/fpm_sockets.h
+@@ -45,10 +45,4 @@ static inline int fd_set_blocked(int fd, int blocked) /* {{{ */
+ }
+ /* }}} */
+
+-#define IPQUAD(sin_addr) \
+- (unsigned int) ((unsigned char *) &(sin_addr)->s_addr)[0], \
+- (unsigned int) ((unsigned char *) &(sin_addr)->s_addr)[1], \
+- (unsigned int) ((unsigned char *) &(sin_addr)->s_addr)[2], \
+- (unsigned int) ((unsigned char *) &(sin_addr)->s_addr)[3]
+-
+ #endif
+diff --git a/sapi/fpm/php-fpm.conf.in b/sapi/fpm/php-fpm.conf.in
+index ab03736..8e242aa 100644
+--- a/sapi/fpm/php-fpm.conf.in
++++ b/sapi/fpm/php-fpm.conf.in
+@@ -152,6 +152,8 @@ group = @php_fpm_group@
+ ; Valid syntaxes are:
+ ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
+ ; a specific port;
++; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
++; a specific port;
+ ; 'port' - to listen on a TCP socket to all addresses on a
+ ; specific port;
+ ; '/path/to/unix/socket' - to listen on a unix socket.
+diff --git a/sapi/fpm/tests/003.phpt b/sapi/fpm/tests/003.phpt
+new file mode 100644
+index 0000000..389cb24
+--- /dev/null
++++ b/sapi/fpm/tests/003.phpt
+@@ -0,0 +1,53 @@
++--TEST--
++FPM: Test IPv6 support
++--SKIPIF--
++<?php include "skipif.inc"; ?>
++--FILE--
++<?php
++
++include "include.inc";
++
++$logfile = dirname(__FILE__).'/php-fpm.log.tmp';
++
++$cfg = <<<EOT
++[global]
++error_log = $logfile
++[unconfined]
++listen = [::1]:9000
++pm = dynamic
++pm.max_children = 5
++pm.start_servers = 2
++pm.min_spare_servers = 1
++pm.max_spare_servers = 3
++EOT;
++
++$fpm = run_fpm($cfg, $tail);
++if (is_resource($fpm)) {
++ var_dump(fgets($tail));
++ var_dump(fgets($tail));
++ $i = 0;
++ while (($i++ < 30) && !($fp = fsockopen('[::1]', 9000))) {
++ usleep(10000);
++ }
++ if ($fp) {
++ echo "Done\n";
++ fclose($fp);
++ }
++ proc_terminate($fpm);
++ stream_get_contents($tail);
++ fclose($tail);
++ proc_close($fpm);
++}
++
++?>
++--EXPECTF--
++string(%d) "[%d-%s-%d %d:%d:%d] NOTICE: fpm is running, pid %d
++"
++string(%d) "[%d-%s-%d %d:%d:%d] NOTICE: ready to handle connections
++"
++Done
++--CLEAN--
++<?php
++ $logfile = dirname(__FILE__).'/php-fpm.log.tmp';
++ @unlink($logfile);
++?>
diff --git a/lang/php56/files/patch-TSRM_threads.m4 b/lang/php56/files/patch-TSRM_threads.m4
new file mode 100644
index 000000000000..299350f078b6
--- /dev/null
+++ b/lang/php56/files/patch-TSRM_threads.m4
@@ -0,0 +1,11 @@
+--- TSRM/threads.m4.orig 2013-12-10 23:31:06.000000000 +0000
++++ TSRM/threads.m4 2013-12-13 21:50:24.898258559 +0000
+@@ -79,7 +79,7 @@ int main() {
+ pthread_mutexattr_t mattr;
+ int data = 1;
+ pthread_mutexattr_init(&mattr);
+- return pthread_create(&thd, NULL, thread_routine, &data);
++ return 0;
+ } ], [
+ pthreads_working=yes
+ ], [
diff --git a/lang/php56/files/patch-Zend__zend.h b/lang/php56/files/patch-Zend__zend.h
new file mode 100644
index 000000000000..2bfe580a3848
--- /dev/null
+++ b/lang/php56/files/patch-Zend__zend.h
@@ -0,0 +1,11 @@
+--- Zend/zend.h.orig 2014-08-27 13:31:35.000000000 +0000
++++ Zend/zend.h 2014-09-04 07:33:27.289480865 +0000
+@@ -193,7 +193,7 @@
+ #endif
+ #define restrict __restrict__
+
+-#if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(NETWARE)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN)
++#if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(NETWARE)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN) && !(defined(ZTS) && defined(__FreeBSD__))
+ # define ZEND_ALLOCA_MAX_SIZE (32 * 1024)
+ # define ALLOCA_FLAG(name) \
+ zend_bool name;
diff --git a/lang/php56/files/patch-Zend_zend_list.c b/lang/php56/files/patch-Zend_zend_list.c
new file mode 100644
index 000000000000..4275e78a40c8
--- /dev/null
+++ b/lang/php56/files/patch-Zend_zend_list.c
@@ -0,0 +1,38 @@
+--- Zend/zend_list.c.orig 2013-12-10 23:31:06.000000000 +0000
++++ Zend/zend_list.c 2013-12-13 21:50:25.016258358 +0000
+@@ -47,7 +47,7 @@ ZEND_API int zend_list_insert(void *ptr,
+ return index;
+ }
+
+-ZEND_API int _zend_list_delete(int id TSRMLS_DC)
++ZEND_API int _zend_list_delete(ulong id TSRMLS_DC)
+ {
+ zend_rsrc_list_entry *le;
+
+@@ -64,7 +64,7 @@ ZEND_API int _zend_list_delete(int id TS
+ }
+
+
+-ZEND_API void *_zend_list_find(int id, int *type TSRMLS_DC)
++ZEND_API void *_zend_list_find(ulong id, int *type TSRMLS_DC)
+ {
+ zend_rsrc_list_entry *le;
+
+@@ -77,7 +77,7 @@ ZEND_API void *_zend_list_find(int id, i
+ }
+ }
+
+-ZEND_API int _zend_list_addref(int id TSRMLS_DC)
++ZEND_API int _zend_list_addref(ulong id TSRMLS_DC)
+ {
+ zend_rsrc_list_entry *le;
+
+@@ -348,7 +348,7 @@ void zend_destroy_rsrc_list_dtors(void)
+ }
+
+
+-const char *zend_rsrc_list_get_rsrc_type(int resource TSRMLS_DC)
++const char *zend_rsrc_list_get_rsrc_type(ulong resource TSRMLS_DC)
+ {
+ zend_rsrc_list_dtors_entry *lde;
+ int rsrc_type;
diff --git a/lang/php56/files/patch-Zend_zend_list.h b/lang/php56/files/patch-Zend_zend_list.h
new file mode 100644
index 000000000000..0ab7450f4de9
--- /dev/null
+++ b/lang/php56/files/patch-Zend_zend_list.h
@@ -0,0 +1,24 @@
+--- Zend/zend_list.h.orig 2013-12-10 23:31:06.000000000 +0000
++++ Zend/zend_list.h 2013-12-13 21:50:25.087258407 +0000
+@@ -71,9 +71,9 @@ int zend_init_rsrc_list_dtors(void);
+ void zend_destroy_rsrc_list_dtors(void);
+
+ ZEND_API int zend_list_insert(void *ptr, int type TSRMLS_DC);
+-ZEND_API int _zend_list_addref(int id TSRMLS_DC);
+-ZEND_API int _zend_list_delete(int id TSRMLS_DC);
+-ZEND_API void *_zend_list_find(int id, int *type TSRMLS_DC);
++ZEND_API int _zend_list_addref(ulong id TSRMLS_DC);
++ZEND_API int _zend_list_delete(ulong id TSRMLS_DC);
++ZEND_API void *_zend_list_find(ulong id, int *type TSRMLS_DC);
+
+ #define zend_list_addref(id) _zend_list_addref(id TSRMLS_CC)
+ #define zend_list_delete(id) _zend_list_delete(id TSRMLS_CC)
+@@ -82,7 +82,7 @@ ZEND_API void *_zend_list_find(int id, i
+ ZEND_API int zend_register_resource(zval *rsrc_result, void *rsrc_pointer, int rsrc_type TSRMLS_DC);
+ ZEND_API void *zend_fetch_resource(zval **passed_id TSRMLS_DC, int default_id, const char *resource_type_name, int *found_resource_type, int num_resource_types, ...);
+
+-ZEND_API const char *zend_rsrc_list_get_rsrc_type(int resource TSRMLS_DC);
++ZEND_API const char *zend_rsrc_list_get_rsrc_type(ulong resource TSRMLS_DC);
+ ZEND_API int zend_fetch_list_dtor_id(char *type_name);
+
+ extern ZEND_API int le_index_ptr; /* list entry type for index pointers */
diff --git a/lang/php56/files/patch-acinclude.m4 b/lang/php56/files/patch-acinclude.m4
new file mode 100644
index 000000000000..836eb4053db4
--- /dev/null
+++ b/lang/php56/files/patch-acinclude.m4
@@ -0,0 +1,45 @@
+--- acinclude.m4.orig 2013-12-10 23:31:06.000000000 +0000
++++ acinclude.m4 2013-12-13 21:50:25.113258550 +0000
+@@ -984,15 +984,9 @@ dnl ------------------------------------
+ if test "$3" != "shared" && test "$3" != "yes" && test "$4" = "cli"; then
+ dnl ---------------------------------------------- CLI static module
+ [PHP_]translit($1,a-z_-,A-Z__)[_SHARED]=no
+- case "$PHP_SAPI" in
+- cgi|embed[)]
+- PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,)
+- EXT_STATIC="$EXT_STATIC $1"
+- ;;
+- *[)]
+ PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,cli)
+- ;;
+- esac
++ PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,cgi)
++ PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,fpm)
+ EXT_CLI_STATIC="$EXT_CLI_STATIC $1"
+ fi
+ PHP_ADD_BUILD_DIR($ext_builddir)
+@@ -1042,12 +1036,6 @@ You either need to build $1 shared or bu
+ build to be successful.
+ ])
+ fi
+- if test "x$is_it_enabled" = "xno" && test "x$3" != "xtrue"; then
+- AC_MSG_ERROR([
+-You've configured extension $1, which depends on extension $2,
+-but you've either not enabled $2, or have disabled it.
+-])
+- fi
+ dnl Some systems require that we link $2 to $1 when building
+ ])
+
+@@ -2320,9 +2308,9 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
+ test -z "$PHP_IMAP_SSL" && PHP_IMAP_SSL=no
+
+ dnl Fallbacks for different configure options
+- if test "$PHP_OPENSSL" != "no"; then
++ if test -n "$PHP_OPENSSL" && test "$PHP_OPENSSL" != "no"; then
+ PHP_OPENSSL_DIR=$PHP_OPENSSL
+- elif test "$PHP_IMAP_SSL" != "no"; then
++ elif test -n "$PHP_IMAP_SSL" && test "$PHP_IMAP_SSL" != "no"; then
+ PHP_OPENSSL_DIR=$PHP_IMAP_SSL
+ fi
+
diff --git a/lang/php56/files/patch-configure.in b/lang/php56/files/patch-configure.in
new file mode 100644
index 000000000000..f30e9d392594
--- /dev/null
+++ b/lang/php56/files/patch-configure.in
@@ -0,0 +1,53 @@
+--- configure.in.orig 2014-04-01 12:32:03.000000000 +0000
++++ configure.in 2014-04-09 07:56:27.824397653 +0000
+@@ -370,7 +370,6 @@
+ dnl .
+ dnl -------------------------------------------------------------------------
+
+-PTHREADS_CHECK
+ PHP_HELP_SEPARATOR([SAPI modules:])
+ PHP_SHLIB_SUFFIX_NAMES
+ PHP_BUILD_PROGRAM
+@@ -401,15 +400,9 @@
+ AC_MSG_RESULT([none])
+ fi
+
+-dnl Exit early
+-if test -z "$PHP_INSTALLED_SAPIS"; then
+- AC_MSG_ERROR([Nothing to build.])
+-fi
+-
+ dnl force ZTS
+ if test "$enable_maintainer_zts" = "yes"; then
+ PTHREADS_ASSIGN_VARS
+- PTHREADS_FLAGS
+ fi
+
+ dnl Starting system checks.
+@@ -688,7 +681,7 @@
+ )
+
+ dnl Some systems (like OpenSolaris) do not have nanosleep in libc
+-PHP_CHECK_FUNC_LIB(nanosleep, rt)
++PHP_CHECK_FUNC(nanosleep, rt)
+
+ dnl Check for getaddrinfo, should be a better way, but...
+ dnl Also check for working getaddrinfo
+@@ -1225,7 +1218,7 @@
+ EXPANDED_DATADIR=$datadir
+ EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"`
+ EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"`
+-INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR
++INCLUDE_PATH=.:${prefix}/share/pear
+
+ exec_prefix=$old_exec_prefix
+ libdir=$old_libdir
+@@ -1435,7 +1428,7 @@
+ PHP_SUBST(install_targets)
+ PHP_SUBST(install_binary_targets)
+
+-PHP_INSTALL_HEADERS([Zend/ TSRM/ include/ main/ main/streams/])
++PHP_INSTALL_HEADERS([Zend/ TSRM/ main/ main/streams/])
+
+ PHP_ADD_SOURCES(TSRM, TSRM.c tsrm_strtok_r.c tsrm_virtual_cwd.c)
+
diff --git a/lang/php56/files/patch-ext_standard_image.c b/lang/php56/files/patch-ext_standard_image.c
new file mode 100644
index 000000000000..02c0907afc61
--- /dev/null
+++ b/lang/php56/files/patch-ext_standard_image.c
@@ -0,0 +1,50 @@
+--- ext/standard/image.c.orig 2013-12-10 23:31:06.000000000 +0000
++++ ext/standard/image.c 2013-12-13 21:50:25.301258244 +0000
+@@ -31,9 +31,7 @@
+ #endif
+ #include "php_image.h"
+
+-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB)
+ #include "zlib.h"
+-#endif
+
+ /* file type markers */
+ PHPAPI const char php_sig_gif[3] = {'G', 'I', 'F'};
+@@ -81,9 +79,7 @@ PHP_MINIT_FUNCTION(imagetypes)
+ REGISTER_LONG_CONSTANT("IMAGETYPE_JP2", IMAGE_FILETYPE_JP2, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMAGETYPE_JPX", IMAGE_FILETYPE_JPX, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMAGETYPE_JB2", IMAGE_FILETYPE_JB2, CONST_CS | CONST_PERSISTENT);
+-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB)
+ REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_CS | CONST_PERSISTENT);
+-#endif
+ REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMAGETYPE_WBMP", IMAGE_FILETYPE_WBMP, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG2000",IMAGE_FILETYPE_JPC, CONST_CS | CONST_PERSISTENT); /* keep alias */
+@@ -188,7 +184,6 @@ static unsigned long int php_swf_get_bit
+ }
+ /* }}} */
+
+-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB)
+ /* {{{ php_handle_swc
+ */
+ static struct gfxinfo *php_handle_swc(php_stream * stream TSRMLS_DC)
+@@ -259,7 +254,6 @@ static struct gfxinfo *php_handle_swc(ph
+ return result;
+ }
+ /* }}} */
+-#endif
+
+ /* {{{ php_handle_swf
+ */
+@@ -1318,11 +1312,7 @@ static void php_getimagesize_from_stream
+ result = php_handle_swf(stream TSRMLS_CC);
+ break;
+ case IMAGE_FILETYPE_SWC:
+-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB)
+ result = php_handle_swc(stream TSRMLS_CC);
+-#else
+- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "The image is a compressed SWF file, but you do not have a static version of the zlib extension enabled");
+-#endif
+ break;
+ case IMAGE_FILETYPE_PSD:
+ result = php_handle_psd(stream TSRMLS_CC);
diff --git a/lang/php56/files/patch-ext_zlib_config0.m4 b/lang/php56/files/patch-ext_zlib_config0.m4
new file mode 100644
index 000000000000..f0d9c99af2fd
--- /dev/null
+++ b/lang/php56/files/patch-ext_zlib_config0.m4
@@ -0,0 +1,11 @@
+--- ext/zlib/config0.m4.orig 2013-12-10 23:31:06.000000000 +0000
++++ ext/zlib/config0.m4 2013-12-13 21:50:25.378258611 +0000
+@@ -8,7 +8,7 @@ PHP_ARG_WITH(zlib,for ZLIB support,
+ PHP_ARG_WITH(zlib-dir,if the location of ZLIB install directory is defined,
+ [ --with-zlib-dir=<DIR> Define the location of zlib install directory], no, no)
+
+-if test "$PHP_ZLIB" != "no" || test "$PHP_ZLIB_DIR" != "no"; then
++if test "$PHP_ZLIB" != "no"; then
+ PHP_NEW_EXTENSION(zlib, zlib.c zlib_fopen_wrapper.c zlib_filter.c, $ext_shared)
+ PHP_SUBST(ZLIB_SHARED_LIBADD)
+
diff --git a/lang/php56/files/patch-main__php_config.h.in b/lang/php56/files/patch-main__php_config.h.in
new file mode 100644
index 000000000000..36cc08c6e92b
--- /dev/null
+++ b/lang/php56/files/patch-main__php_config.h.in
@@ -0,0 +1,12 @@
+--- main/php_config.h.in.orig 2013-12-10 23:50:50.000000000 +0000
++++ main/php_config.h.in 2013-12-13 21:50:25.396258363 +0000
+@@ -2342,6 +2342,9 @@
+ /* Define if processor uses big-endian word */
+ #undef WORDS_BIGENDIAN
+
++/* Include external shared modules configurations */
++#include "ext/php_config.h"
++
+ /* Whether sprintf is broken */
+ #undef ZEND_BROKEN_SPRINTF
+
diff --git a/lang/php56/files/patch-sapi_apache2filter_config.m4 b/lang/php56/files/patch-sapi_apache2filter_config.m4
new file mode 100644
index 000000000000..0741340c5d52
--- /dev/null
+++ b/lang/php56/files/patch-sapi_apache2filter_config.m4
@@ -0,0 +1,11 @@
+--- sapi/apache2filter/config.m4.orig 2013-12-10 23:31:06.000000000 +0000
++++ sapi/apache2filter/config.m4 2013-12-13 21:50:25.481258052 +0000
+@@ -68,7 +68,7 @@ if test "$PHP_APXS2FILTER" != "no"; then
+ fi
+
+ APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
+- if test -z `$APXS -q SYSCONFDIR`; then
++ if true; then
+ INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
+ $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
+ -i -n php5"
diff --git a/lang/php56/files/patch-sapi_apache2handler_config.m4 b/lang/php56/files/patch-sapi_apache2handler_config.m4
new file mode 100644
index 000000000000..42e50def5df3
--- /dev/null
+++ b/lang/php56/files/patch-sapi_apache2handler_config.m4
@@ -0,0 +1,11 @@
+--- sapi/apache2handler/config.m4.orig 2013-12-10 23:31:06.000000000 +0000
++++ sapi/apache2handler/config.m4 2013-12-13 21:50:25.488258534 +0000
+@@ -67,7 +67,7 @@ if test "$PHP_APXS2" != "no"; then
+ fi
+
+ APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
+- if test -z `$APXS -q SYSCONFDIR`; then
++ if true; then
+ INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
+ $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
+ -i -n php5"
diff --git a/lang/php56/files/patch-sapi_fpm_Makefile.frag b/lang/php56/files/patch-sapi_fpm_Makefile.frag
new file mode 100644
index 000000000000..3d0ff1979f9e
--- /dev/null
+++ b/lang/php56/files/patch-sapi_fpm_Makefile.frag
@@ -0,0 +1,12 @@
+--- sapi/fpm/Makefile.frag.orig 2013-12-10 23:31:06.000000000 +0000
++++ sapi/fpm/Makefile.frag 2013-12-13 21:50:25.575258563 +0000
+@@ -18,6 +18,6 @@ install-fpm: $(SAPI_FPM_PATH)
+ @$(mkinstalldirs) $(INSTALL_ROOT)$(mandir)/man8
+ @$(INSTALL_DATA) sapi/fpm/php-fpm.8 $(INSTALL_ROOT)$(mandir)/man8/php-fpm$(program_suffix).8
+
+- @echo "Installing PHP FPM status page: $(INSTALL_ROOT)$(datadir)/fpm/"
+- @$(mkinstalldirs) $(INSTALL_ROOT)$(datadir)/fpm
+- @$(INSTALL_DATA) sapi/fpm/status.html $(INSTALL_ROOT)$(datadir)/fpm/status.html
++ @echo "Installing PHP FPM status page: $(INSTALL_ROOT)$(datadir)/php/fpm/"
++ @$(mkinstalldirs) $(INSTALL_ROOT)$(datadir)/php/fpm
++ @$(INSTALL_DATA) sapi/fpm/status.html $(INSTALL_ROOT)$(datadir)/php/fpm/status.html
diff --git a/lang/php56/files/patch-sapi_fpm_config.m4 b/lang/php56/files/patch-sapi_fpm_config.m4
new file mode 100644
index 000000000000..c8d7a8747fbe
--- /dev/null
+++ b/lang/php56/files/patch-sapi_fpm_config.m4
@@ -0,0 +1,20 @@
+--- sapi/fpm/config.m4.orig 2013-12-10 23:31:06.000000000 +0000
++++ sapi/fpm/config.m4 2013-12-13 21:50:25.662258580 +0000
+@@ -317,7 +317,7 @@ AC_DEFUN([AC_FPM_LQ],
+
+ AC_MSG_CHECKING([for TCP_INFO])
+
+- AC_TRY_COMPILE([ #include <netinet/tcp.h> ], [struct tcp_info ti; int x = TCP_INFO;], [
++ AC_TRY_COMPILE([ #include <netinet/tcp.h> ], [struct tcp_info ti; ti.tcpi_sacked = 0; int x = TCP_INFO;], [
+ have_lq=tcp_info
+ AC_MSG_RESULT([yes])
+ ], [
+@@ -338,7 +338,7 @@ AC_DEFUN([AC_FPM_LQ],
+ AC_MSG_RESULT([no])
+ ])
+
+- if test "$have_lq" = "tcp_info"; then
++ if test "$have_lq" = "so_listenq"; then
+ AC_DEFINE([HAVE_LQ_SO_LISTENQ], 1, [do we have SO_LISTENQxxx?])
+ fi
+ fi
diff --git a/lang/php56/files/patch-sapi_fpm_php-fpm.conf.in b/lang/php56/files/patch-sapi_fpm_php-fpm.conf.in
new file mode 100644
index 000000000000..f80dcb9ff714
--- /dev/null
+++ b/lang/php56/files/patch-sapi_fpm_php-fpm.conf.in
@@ -0,0 +1,11 @@
+--- sapi/fpm/php-fpm.conf.in.orig 2013-12-10 23:31:06.000000000 +0000
++++ sapi/fpm/php-fpm.conf.in 2013-12-13 21:50:25.757258451 +0000
+@@ -341,7 +341,7 @@ pm.max_spare_servers = 3
+ ; last request memory: 0
+ ;
+ ; Note: There is a real-time FPM status monitoring sample web page available
+-; It's available in: @EXPANDED_DATADIR@/fpm/status.html
++; It's available in: @EXPANDED_DATADIR@/php/fpm/status.html
+ ;
+ ; Note: The value must start with a leading slash (/). The value can be
+ ; anything, but it may not be a good idea to use the .php extension or it
diff --git a/lang/php56/files/php-fpm.in b/lang/php56/files/php-fpm.in
new file mode 100644
index 000000000000..55e2ac992408
--- /dev/null
+++ b/lang/php56/files/php-fpm.in
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: php-fpm
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+#
+# Add the following line to /etc/rc.conf to enable php-fpm:
+# php_fpm_enable="YES"
+#
+
+. /etc/rc.subr
+
+name="php_fpm"
+rcvar=php_fpm_enable
+
+load_rc_config "$name"
+
+: ${php_fpm_enable="NO"}
+
+extra_commands="reload logrotate"
+
+command="%%PREFIX%%/sbin/php-fpm"
+pidfile="/var/run/php-fpm.pid"
+sig_stop="QUIT"
+sig_reload="USR2"
+logrotate_cmd="php_fpm_logrotate"
+
+required_files="%%PREFIX%%/etc/php-fpm.conf"
+
+php_fpm_logrotate() {
+ if [ -z "$rc_pid" ]; then
+ _run_rc_notrunning
+ return 1
+ fi
+ echo "Rotating logs $name."
+ kill -USR1 $rc_pid
+}
+
+run_rc_command "$1"