%if 0%{?scl:1} %scl_package php %else %global pkg_name %{name} %global _root_sysconfdir %{_sysconfdir} %global _root_bindir %{_bindir} %global _root_sbindir %{_sbindir} %global _root_includedir %{_includedir} %global _root_libdir %{_libdir} %global _root_prefix %{_prefix} %global _root_initddir %{_initddir} %endif # API/ABI check %global apiver 20131106 %global zendver 20131226 %global pdover 20080721 # Extension version %global opcachever 7.0.4-dev %global oci8ver 2.0.9 # Use for first build of PHP (before pecl/zip and pecl/jsonc) %global php_bootstrap 0 # Adds -z now to the linker flags %global _hardened_build 1 # Ugly hack. Harcoded values to avoid relocation. %global _httpd_mmn %(cat %{_root_includedir}/httpd/.mmn 2>/dev/null || echo 0) %global _httpd_confdir %{_root_sysconfdir}/httpd/conf.d %global _httpd_moddir %{_libdir}/httpd/modules %global _root_httpd_moddir %{_root_libdir}/httpd/modules %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 # httpd 2.4 values %global _httpd_apxs %{_root_bindir}/apxs %global _httpd_modconfdir %{_root_sysconfdir}/httpd/conf.modules.d %global _httpd_contentdir /usr/share/httpd %else # httpd 2.2 values %global _httpd_apxs %{_root_sbindir}/apxs %global _httpd_modconfdir %{_root_sysconfdir}/httpd/conf.d %global _httpd_contentdir /var/www %endif %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_root_sysconfdir}/rpm; echo $d) %global mysql_sock %(mysql_config --socket 2>/dev/null || echo /var/lib/mysql/mysql.sock) %global oraclever 12.1 # Build for LiteSpeed Web Server (LSAPI) %global with_lsws 1 # Regression tests take a long time, you can skip 'em with this %if %{php_bootstrap} %global runselftest 0 %else %{!?runselftest: %global runselftest 1} %endif # Use the arch-specific mysql_config binary to avoid mismatch with the # arch detection heuristic used by bindir/mysql_config. %global mysql_config %{_root_libdir}/mysql/mysql_config # Optional components; pass "--with mssql" etc to rpmbuild. %global with_oci8 %{?_with_oci8:1}%{!?_with_oci8:0} %global with_imap 1 %global with_interbase 1 %global with_mcrypt 1 %global with_mssql 1 %global with_tidy 1 %if 0%{?fedora} >= 11 || 0%{?rhel} >= 6 %global with_sqlite3 1 %else %global with_sqlite3 0 %endif %global with_enchant 1 %global with_recode 1 %global with_t1lib 1 %if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 %global with_libpcre 1 %else %global with_libpcre 0 %endif %if 0%{?__isa_bits:1} %global isasuffix -%{__isa_bits} %else %global isasuffix %nil %endif %if 0%{?fedora} < 12 && 0%{?rhel} < 6 %global with_dtrace 0 %else %global with_dtrace 1 %endif # build with system libgd (gd-last in remi repo) %global with_libgd 1 %if 0%{?fedora} < 17 && 0%{?rhel} < 6 %global with_vpx 0 %else %global with_vpx 1 %endif # systemd to manage the service %if 0%{?fedora} >= 15 || 0%{?rhel} >= 7 %global with_systemd 1 %else %global with_systemd 0 %endif # systemd with notify mode %if 0%{?fedora} >= 16 || 0%{?rhel} >= 7 %global with_systemdfull 1 %else %global with_systemdfull 0 %endif # systemd with additional service config %if 0%{?fedora} >= 19 || 0%{?rhel} >= 7 %global with_systemdmax 1 %else %global with_systemdmax 0 %endif # httpd 2.4.10 with httpd-filesystem and sethandler support %if 0%{?fedora} >= 21 %global with_httpd2410 1 %else %global with_httpd2410 0 %endif %global with_zip 0 %if 0%{?fedora} < 18 && 0%{?rhel} < 7 %global db_devel db4-devel %else %global db_devel libdb-devel %endif Summary: PHP scripting language for creating dynamic web sites Name: %{?scl_prefix}php Version: 5.6.0 Release: 1%{?dist}.1 # All files licensed under PHP version 3.01, except # Zend is licensed under Zend # TSRM is licensed under BSD License: PHP and Zend and BSD Group: Development/Languages URL: http://www.php.net/ Source0: php-%{version}%{?rcver}-strip.tar.xz Source1: php.conf Source2: php.ini Source3: macros.php Source4: php-fpm.conf Source5: php-fpm-www.conf Source6: php-fpm.service Source7: php-fpm.logrotate Source8: php-fpm.sysconfig Source9: php.modconf Source10: php.conf2 Source11: php-fpm.init Source12: strip.sh # Configuration files for some extensions Source50: opcache.ini Source51: opcache-default.blacklist # Build fixes Patch5: php-5.2.0-includedir.patch Patch7: php-5.3.0-recode.patch Patch8: php-5.4.7-libdb.patch # Fixes for extension modules # https://bugs.php.net/63171 no odbc call during timeout Patch21: php-5.4.7-odbctimer.patch # Functional changes Patch40: php-5.4.0-dlopen.patch Patch42: php-5.3.1-systzdata-v10.patch # See http://bugs.php.net/53436 Patch43: php-5.4.0-phpize.patch # Use -lldap_r for OpenLDAP Patch45: php-5.4.8-ldap_r.patch # Make php_config.h constant across builds Patch46: php-5.4.9-fixheader.patch # drop "Configure command" from phpinfo output Patch47: php-5.4.9-phpinfo.patch # RC Patch Patch91: php-5.3.7-oci8conf.patch # Upstream fixes (100+) # Security fixes (200+) # Fixes for tests (300+) # Revert changes for pcre < 8.34 Patch301: php-5.6.0-oldpcre.patch # see https://bugzilla.redhat.com/971416 Patch302: php-5.6.0-noNO.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: bzip2-devel, curl-devel >= 7.9, %{db_devel} BuildRequires: httpd-devel >= 2.0.46-1, pam-devel %if %{with_httpd2410} # to ensure we are using httpd with filesystem feature (see #1081453) BuildRequires: httpd-filesystem %endif BuildRequires: libstdc++-devel, openssl-devel %if %{with_sqlite3} # For SQLite3 extension BuildRequires: sqlite-devel >= 3.6.0 %else # Enough for pdo_sqlite BuildRequires: sqlite-devel >= 3.0.0 %endif BuildRequires: zlib-devel, smtpdaemon, libedit-devel %if %{with_libpcre} BuildRequires: pcre-devel >= 8.20 %endif BuildRequires: bzip2, perl, libtool >= 1.4.3, gcc-c++ BuildRequires: libtool-ltdl-devel %if %{with_dtrace} BuildRequires: systemtap-sdt-devel %endif Requires: httpd-mmn = %{_httpd_mmn} Provides: %{?scl_prefix}mod_php = %{version}-%{release} Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} # For backwards-compatibility, require php-cli for the time being: Requires: %{?scl_prefix}php-cli%{?_isa} = %{version}-%{release} # To ensure correct /var/lib/php/session ownership: %if %{with_httpd2410} Requires(pre): httpd-filesystem %else Requires(pre): httpd %endif %if 0%{?fedora} < 20 && 0%{?rhel} < 7 # Don't provides extensions, which are not shared library, as .so %{?filter_provides_in: %filter_provides_in %{_libdir}/php/modules/.*\.so$} %{?filter_provides_in: %filter_provides_in %{_httpd_moddir}/.*\.so$} %{?filter_setup} %endif %description PHP is an HTML-embedded scripting language. PHP attempts to make it easy for developers to write dynamically generated web pages. PHP also offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts. This package contains the module (often referred to as mod_php) which adds support for the PHP language to system Apache HTTP Server. %package cli Group: Development/Languages Summary: Command-line interface for PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-cgi = %{version}-%{release}, %{?scl_prefix}php-cgi%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-pcntl, %{?scl_prefix}php-pcntl%{?_isa} Provides: %{?scl_prefix}php-readline, %{?scl_prefix}php-readline%{?_isa} %description cli The %{?scl_prefix}php-cli package contains the command-line interface executing PHP scripts, /usr/bin/php, and the CGI interface. %package dbg Group: Development/Languages Summary: The interactive PHP debugger Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description dbg The %{?scl_prefix}php-dbg package contains the interactive PHP debugger. %package fpm Group: Development/Languages Summary: PHP FastCGI Process Manager # All files licensed under PHP version 3.01, except # Zend is licensed under Zend # TSRM and fpm are licensed under BSD License: PHP and Zend and BSD Requires(pre): %{_root_sbindir}/useradd Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %if %{with_systemdfull} BuildRequires: systemd-devel %endif %if %{with_systemd} BuildRequires: systemd-units Requires: systemd-units Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units # This is actually needed for the %%triggerun script but Requires(triggerun) # is not valid. We can use %%post because this particular %%triggerun script # should fire just after this package is installed. Requires(post): systemd-sysv %else # This is for /sbin/service Requires(preun): initscripts Requires(postun): initscripts %endif %if %{with_httpd2410} # To ensure correct /var/lib/php/session ownership: Requires(pre): httpd-filesystem # For php.conf in /etc/httpd/conf.d # and version 2.4.10 for proxy support in SetHandler Requires: httpd-filesystem >= 2.4.10 %endif %description fpm PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. %if %{with_lsws} %package litespeed Summary: LiteSpeed Web Server PHP support Group: Development/Languages Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description litespeed The %{?scl_prefix}php-litespeed package provides the %{_bindir}/lsphp command used by the LiteSpeed Web Server (LSAPI enabled PHP). %endif %package common Group: Development/Languages Summary: Common files for PHP # All files licensed under PHP version 3.01, except # fileinfo is licensed under PHP version 3.0 # regex, libmagic are licensed under BSD # main/snprintf.c, main/spprintf.c and main/rfc1867.c are ASL 1.0 License: PHP and BSD and ASL 1.0 # ABI/API check - Arch specific Provides: %{?scl_prefix}php(api) = %{apiver}%{isasuffix} Provides: %{?scl_prefix}php(zend-abi) = %{zendver}%{isasuffix} Provides: %{?scl_prefix}php(language) = %{version} Provides: %{?scl_prefix}php(language)%{?_isa} = %{version} # Provides for all builtin/shared modules: Provides: %{?scl_prefix}php-bz2, %{?scl_prefix}php-bz2%{?_isa} Provides: %{?scl_prefix}php-calendar, %{?scl_prefix}php-calendar%{?_isa} Provides: %{?scl_prefix}php-core = %{version}, %{?scl_prefix}php-core%{?_isa} = %{version} Provides: %{?scl_prefix}php-ctype, %{?scl_prefix}php-ctype%{?_isa} Provides: %{?scl_prefix}php-curl, %{?scl_prefix}php-curl%{?_isa} Provides: %{?scl_prefix}php-date, %{?scl_prefix}php-date%{?_isa} Provides: %{?scl_prefix}php-ereg, %{?scl_prefix}php-ereg%{?_isa} Provides: %{?scl_prefix}php-exif, %{?scl_prefix}php-exif%{?_isa} Provides: %{?scl_prefix}php-fileinfo, %{?scl_prefix}php-fileinfo%{?_isa} Provides: %{?scl_prefix}php-filter, %{?scl_prefix}php-filter%{?_isa} Provides: %{?scl_prefix}php-ftp, %{?scl_prefix}php-ftp%{?_isa} Provides: %{?scl_prefix}php-gettext, %{?scl_prefix}php-gettext%{?_isa} Provides: %{?scl_prefix}php-hash, %{?scl_prefix}php-hash%{?_isa} Provides: %{?scl_prefix}php-mhash = %{version}, %{?scl_prefix}php-mhash%{?_isa} = %{version} Provides: %{?scl_prefix}php-iconv, %{?scl_prefix}php-iconv%{?_isa} Provides: %{?scl_prefix}php-libxml, %{?scl_prefix}php-libxml%{?_isa} Provides: %{?scl_prefix}php-openssl, %{?scl_prefix}php-openssl%{?_isa} Provides: %{?scl_prefix}php-phar, %{?scl_prefix}php-phar%{?_isa} Provides: %{?scl_prefix}php-pcre, %{?scl_prefix}php-pcre%{?_isa} Provides: %{?scl_prefix}php-reflection, %{?scl_prefix}php-reflection%{?_isa} Provides: %{?scl_prefix}php-session, %{?scl_prefix}php-session%{?_isa} Provides: %{?scl_prefix}php-sockets, %{?scl_prefix}php-sockets%{?_isa} Provides: %{?scl_prefix}php-spl, %{?scl_prefix}php-spl%{?_isa} Provides: %{?scl_prefix}php-standard = %{version}, %{?scl_prefix}php-standard%{?_isa} = %{version} Provides: %{?scl_prefix}php-tokenizer, %{?scl_prefix}php-tokenizer%{?_isa} %if ! %{php_bootstrap} Requires: %{?scl_prefix}php-pecl-jsonc%{?_isa} %endif %if %{with_zip} Provides: %{?scl_prefix}php-zip, %{?scl_prefix}php-zip%{?_isa} %else %if ! %{php_bootstrap} Requires: %{?scl_prefix}php-pecl-zip%{?_isa} %endif %endif Provides: %{?scl_prefix}php-zlib, %{?scl_prefix}php-zlib%{?_isa} %{?scl:Requires: %{scl}-runtime} %description common The %{?scl_prefix}php-common package contains files used by both the %{?scl_prefix}php package and the %{?scl_prefix}php-cli package. %package devel Group: Development/Libraries Summary: Files needed for building PHP extensions Requires: %{?scl_prefix}php-cli%{?_isa} = %{version}-%{release}, autoconf, automake %if %{with_libpcre} Requires: pcre-devel%{?_isa} >= 8.20 %endif %if ! %{php_bootstrap} Requires: %{?scl_prefix}php-pecl-jsonc-devel%{?_isa} %endif %description devel The %{?scl_prefix}php-devel package contains the files needed for building PHP extensions. If you need to compile your own PHP extensions, you will need to install this package. %package opcache Summary: The Zend OPcache Group: Development/Languages License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-pecl-zendopcache = %{opcachever} Provides: %{?scl_prefix}php-pecl-zendopcache%{?_isa} = %{opcachever} Provides: %{?scl_prefix}php-pecl(opcache) = %{opcachever} Provides: %{?scl_prefix}php-pecl(opcache)%{?_isa} = %{opcachever} %description opcache The Zend OPcache provides faster PHP execution through opcode caching and optimization. It improves PHP performance by storing precompiled script bytecode in the shared memory. This eliminates the stages of reading code from the disk and compiling it on future access. In addition, it applies a few bytecode optimization patterns that make code execution faster. %if %{with_imap} %package imap Summary: A module for PHP applications that use IMAP Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: krb5-devel, openssl-devel, libc-client-devel %description imap The %{?scl_prefix}php-imap module will add IMAP (Internet Message Access Protocol) support to PHP. IMAP is a protocol for retrieving and uploading e-mail messages on mail servers. PHP is an HTML-embedded scripting language. %endif %package ldap Summary: A module for PHP applications that use LDAP Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: cyrus-sasl-devel, openldap-devel, openssl-devel %description ldap The %{?scl_prefix}php-ldap package adds Lightweight Directory Access Protocol (LDAP) support to PHP. LDAP is a set of protocols for accessing directory services over the Internet. PHP is an HTML-embedded scripting language. %package pdo Summary: A database access abstraction module for PHP applications Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} # ABI/API check - Arch specific Provides: %{?scl_prefix}php-pdo-abi = %{pdover}%{isasuffix} Provides: %{?scl_prefix}php(pdo-abi) = %{pdover}%{isasuffix} %if %{with_sqlite3} Provides: %{?scl_prefix}php-sqlite3, %{?scl_prefix}php-sqlite3%{?_isa} %endif Provides: %{?scl_prefix}php-pdo_sqlite, %{?scl_prefix}php-pdo_sqlite%{?_isa} %description pdo The %{?scl_prefix}php-pdo package contains a dynamic shared object that will add a database access abstraction layer to PHP. This module provides a common interface for accessing MySQL, PostgreSQL or other databases. %package mysqlnd Summary: A module for PHP applications that use MySQL databases Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-mysql = %{version}-%{release} Provides: %{?scl_prefix}php-mysql%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-mysqli = %{version}-%{release} Provides: %{?scl_prefix}php-mysqli%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-pdo_mysql, %{?scl_prefix}php-pdo_mysql%{?_isa} Obsoletes: %{?scl_prefix}php-mysql < %{version} %description mysqlnd The %{?scl_prefix}php-mysqlnd package contains a dynamic shared object that will add MySQL database support to PHP. MySQL is an object-relational database management system. PHP is an HTML-embeddable scripting language. If you need MySQL support for PHP applications, you will need to install this package and the php package. This package use the MySQL Native Driver %package pgsql Summary: A PostgreSQL database module for PHP Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-pdo_pgsql, %{?scl_prefix}php-pdo_pgsql%{?_isa} BuildRequires: krb5-devel, openssl-devel, postgresql-devel %description pgsql The %{?scl_prefix}php-pgsql package add PostgreSQL database support to PHP. PostgreSQL is an object-relational database management system that supports almost all SQL constructs. PHP is an HTML-embedded scripting language. If you need back-end support for PostgreSQL, you should install this package in addition to the main php package. %package process Summary: Modules for PHP script using system process interfaces Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-posix, %{?scl_prefix}php-posix%{?_isa} Provides: %{?scl_prefix}php-shmop, %{?scl_prefix}php-shmop%{?_isa} Provides: %{?scl_prefix}php-sysvsem, %{?scl_prefix}php-sysvsem%{?_isa} Provides: %{?scl_prefix}php-sysvshm, %{?scl_prefix}php-sysvshm%{?_isa} Provides: %{?scl_prefix}php-sysvmsg, %{?scl_prefix}php-sysvmsg%{?_isa} %description process The %{?scl_prefix}php-process package contains dynamic shared objects which add support to PHP using system interfaces for inter-process communication. %package odbc Summary: A module for PHP applications that use ODBC databases Group: Development/Languages # All files licensed under PHP version 3.01, except # pdo_odbc is licensed under PHP version 3.0 License: PHP Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-pdo_odbc, %{?scl_prefix}php-pdo_odbc%{?_isa} BuildRequires: unixODBC-devel %description odbc The %{?scl_prefix}php-odbc package contains a dynamic shared object that will add database support through ODBC to PHP. ODBC is an open specification which provides a consistent API for developers to use for accessing data sources (which are often, but not always, databases). PHP is an HTML-embeddable scripting language. If you need ODBC support for PHP applications, you will need to install this package and the php package. %package soap Summary: A module for PHP applications that use the SOAP protocol Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: libxml2-devel %description soap The %{?scl_prefix}php-soap package contains a dynamic shared object that will add support to PHP for using the SOAP web services protocol. %if %{with_interbase} %package interbase Summary: A module for PHP applications that use Interbase/Firebird databases Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP BuildRequires: firebird-devel Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-firebird, %{?scl_prefix}php-firebird%{?_isa} Provides: %{?scl_prefix}php-pdo_firebird, %{?scl_prefix}php-pdo_firebird%{?_isa} %description interbase The %{?scl_prefix}php-interbase package contains a dynamic shared object that will add database support through Interbase/Firebird to PHP. InterBase is the name of the closed-source variant of this RDBMS that was developed by Borland/Inprise. Firebird is a commercially independent project of C and C++ programmers, technical advisors and supporters developing and enhancing a multi-platform relational database management system based on the source code released by Inprise Corp (now known as Borland Software Corp) under the InterBase Public License. %endif %if %{with_oci8} %package oci8 Summary: A module for PHP applications that use OCI8 databases Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP BuildRequires: oracle-instantclient-devel >= %{oraclever} Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-pdo_oci, %{?scl_prefix}php-pdo_oci%{?_isa} Obsoletes: %{?scl_prefix}php-pecl-oci8 < %{oci8ver} Conflicts: %{?scl_prefix}php-pecl-oci8 >= %{oci8ver} Provides: %{?scl_prefix}php-pecl(oci8) = %{oci8ver}, %{?scl_prefix}php-pecl(oci8)%{?_isa} = %{oci8ver} # Should requires libclntsh.so.12.1, but it's not provided by Oracle RPM. AutoReq: 0 %description oci8 The %{?scl_prefix}php-oci8 packages provides the OCI8 extension version %{oci8ver} and the PDO driver to access Oracle Database. The extension is linked with Oracle client libraries %{oraclever} (Oracle Instant Client). For details, see Oracle's note "Oracle Client / Server Interoperability Support" (ID 207303.1). You must install libclntsh.so.%{oraclever} to use this package, provided in the database installation, or in the free Oracle Instant Client available from Oracle. Notice: - %{?scl_prefix}php-oci8 provides oci8 and pdo_oci extensions from php sources. - %{?scl_prefix}php-pecl-oci8 only provides oci8 extension. Documentation is at http://php.net/oci8 and http://php.net/pdo_oci %endif %package snmp Summary: A module for PHP applications that query SNMP-managed devices Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release}, net-snmp BuildRequires: net-snmp-devel %description snmp The %{?scl_prefix}php-snmp package contains a dynamic shared object that will add support for querying SNMP devices to PHP. PHP is an HTML-embeddable scripting language. If you need SNMP support for PHP applications, you will need to install this package and the php package. %package xml Summary: A module for PHP applications which use XML Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-dom, %{?scl_prefix}php-dom%{?_isa} Provides: %{?scl_prefix}php-domxml, %{?scl_prefix}php-domxml%{?_isa} Provides: %{?scl_prefix}php-simplexml, %{?scl_prefix}php-simplexml%{?_isa} Provides: %{?scl_prefix}php-wddx, %{?scl_prefix}php-wddx%{?_isa} Provides: %{?scl_prefix}php-xmlreader, %{?scl_prefix}php-xmlreader%{?_isa} Provides: %{?scl_prefix}php-xmlwriter, %{?scl_prefix}php-xmlwriter%{?_isa} Provides: %{?scl_prefix}php-xsl, %{?scl_prefix}php-xsl%{?_isa} BuildRequires: libxslt-devel >= 1.0.18-1, libxml2-devel >= 2.4.14-1 %description xml The %{?scl_prefix}php-xml package contains dynamic shared objects which add support to PHP for manipulating XML documents using the DOM tree, and performing XSL transformations on XML documents. %package xmlrpc Summary: A module for PHP applications which use the XML-RPC protocol Group: Development/Languages # All files licensed under PHP version 3.01, except # libXMLRPC is licensed under BSD License: PHP and BSD Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description xmlrpc The %{?scl_prefix}php-xmlrpc package contains a dynamic shared object that will add support for the XML-RPC protocol to PHP. %package mbstring Summary: A module for PHP applications which need multi-byte string handling Group: Development/Languages # All files licensed under PHP version 3.01, except # libmbfl is licensed under LGPLv2 # onigurama is licensed under BSD # ucgendat is licensed under OpenLDAP License: PHP and LGPLv2 and BSD and OpenLDAP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description mbstring The %{?scl_prefix}php-mbstring package contains a dynamic shared object that will add support for multi-byte string handling to PHP. %package gd Summary: A module for PHP applications for using the gd graphics library Group: Development/Languages # All files licensed under PHP version 3.01 %if %{with_libgd} License: PHP %else # bundled libgd is licensed under BSD License: PHP and BSD %endif Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} # Required to build the bundled GD library BuildRequires: libjpeg-devel, libpng-devel, freetype-devel BuildRequires: libXpm-devel %if %{with_t1lib} BuildRequires: t1lib-devel %if %{with_vpx} BuildRequires: libvpx-devel %endif %endif %if %{with_libgd} BuildRequires: gd-devel >= 2.1.0 %endif %description gd The %{?scl_prefix}php-gd package contains a dynamic shared object that will add support for using the gd graphics library to PHP. %package bcmath Summary: A module for PHP applications for using the bcmath library Group: Development/Languages # All files licensed under PHP version 3.01, except # libbcmath is licensed under LGPLv2+ License: PHP and LGPLv2+ Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description bcmath The %{?scl_prefix}php-bcmath package contains a dynamic shared object that will add support for using the bcmath library to PHP. %package gmp Summary: A module for PHP applications for using the GNU MP library Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP BuildRequires: gmp-devel Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description gmp These functions allow you to work with arbitrary-length integers using the GNU MP library. %package dba Summary: A database abstraction layer module for PHP applications Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP BuildRequires: %{db_devel}, tokyocabinet-devel Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description dba The %{?scl_prefix}php-dba package contains a dynamic shared object that will add support for using the DBA database abstraction layer to PHP. %if %{with_mcrypt} %package mcrypt Summary: Standard PHP module provides mcrypt library support Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: libmcrypt-devel %description mcrypt The %{?scl_prefix}php-mcrypt package contains a dynamic shared object that will add support for using the mcrypt library to PHP. %endif %if %{with_tidy} %package tidy Summary: Standard PHP module provides tidy library support Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: libtidy-devel %description tidy The %{?scl_prefix}php-tidy package contains a dynamic shared object that will add support for using the tidy library to PHP. %endif %if %{with_mssql} %package mssql Summary: MSSQL database module for PHP Group: Development/Languages # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} BuildRequires: freetds-devel Provides: %{?scl_prefix}php-pdo_dblib, %{?scl_prefix}php-pdo_dblib%{?_isa} %description mssql The %{?scl_prefix}php-mssql package contains a dynamic shared object that will add MSSQL database support to PHP. It uses the TDS (Tabular DataStream) protocol through the freetds library, hence any database server which supports TDS can be accessed. %endif %package pspell Summary: A module for PHP applications for using pspell interfaces Group: System Environment/Libraries # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: aspell-devel >= 0.50.0 %description pspell The %{?scl_prefix}php-pspell package contains a dynamic shared object that will add support for using the pspell library to PHP. %if %{with_recode} %package recode Summary: A module for PHP applications for using the recode library Group: System Environment/Libraries # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: recode-devel %description recode The %{?scl_prefix}php-recode package contains a dynamic shared object that will add support for using the recode library to PHP. %endif %package intl Summary: Internationalization extension for PHP applications Group: System Environment/Libraries # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} # Upstream requires 4.0, we require 50 to ensure use of libicu-last BuildRequires: libicu-devel >= 50 %description intl The %{?scl_prefix}php-intl package contains a dynamic shared object that will add support for using the ICU library to PHP. %if %{with_enchant} %package enchant Summary: Enchant spelling extension for PHP applications # All files licensed under PHP version 3.0 License: PHP Group: System Environment/Libraries Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: enchant-devel >= 1.2.4 %description enchant The %{?scl_prefix}php-enchant package contains a dynamic shared object that will add support for using the enchant library to PHP. %endif %prep : Building %{name}-%{version}-%{release} with systemd=%{with_systemd} imap=%{with_imap} interbase=%{with_interbase} mcrypt=%{with_mcrypt} mssql=%{with_mssql} sqlite3=%{with_sqlite3} tidy=%{with_tidy} zip=%{with_zip} %setup -q -n php-%{version}%{?rcver} %patch5 -p1 -b .includedir %patch7 -p1 -b .recode %patch8 -p1 -b .libdb %patch21 -p1 -b .odbctimer %patch40 -p1 -b .dlopen %patch42 -p1 -b .systzdata %patch43 -p1 -b .headers %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 %patch45 -p1 -b .ldap_r %endif %patch46 -p1 -b .fixheader %patch47 -p1 -b .phpinfo %patch91 -p1 -b .remi-oci8 # upstream patches # security patches # Fixes for tests %if %{with_libpcre} %if 0%{?fedora} < 21 # Only apply when system libpcre < 8.34 %patch301 -p1 -b .pcre834 %endif %endif %patch302 -p0 -b .971416 # Prevent %%doc confusion over LICENSE files cp Zend/LICENSE Zend/ZEND_LICENSE cp TSRM/LICENSE TSRM_LICENSE cp ext/ereg/regex/COPYRIGHT regex_COPYRIGHT %if ! %{with_libgd} cp ext/gd/libgd/README libgd_README cp ext/gd/libgd/COPYING libgd_COPYING %endif cp sapi/fpm/LICENSE fpm_LICENSE cp ext/mbstring/libmbfl/LICENSE libmbfl_LICENSE cp ext/mbstring/oniguruma/COPYING oniguruma_COPYING cp ext/mbstring/ucgendat/OPENLDAP_LICENSE ucgendat_LICENSE cp ext/fileinfo/libmagic/LICENSE libmagic_LICENSE cp ext/phar/LICENSE phar_LICENSE cp ext/bcmath/libbcmath/COPYING.LIB libbcmath_COPYING # Multiple builds for multiple SAPIs mkdir \ build-fpm \ build-apache \ build-cgi # ----- Manage known as failed test ------- # affected by systzdata patch rm ext/date/tests/timezone_location_get.phpt # fails sometime rm ext/sockets/tests/mcast_ipv?_recv.phpt # cause stack exhausion rm Zend/tests/bug54268.phpt # Safety check for API version change. pver=$(sed -n '/#define PHP_VERSION /{s/.* "//;s/".*$//;p}' main/php_version.h) if test "x${pver}" != "x%{version}%{?rcver}"; then : Error: Upstream PHP version is now ${pver}, expecting %{version}%{?rcver}. : Update the version/rcver macros and rebuild. exit 1 fi vapi=`sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h` if test "x${vapi}" != "x%{apiver}"; then : Error: Upstream API version is now ${vapi}, expecting %{apiver}. : Update the apiver macro and rebuild. exit 1 fi vzend=`sed -n '/#define ZEND_MODULE_API_NO/{s/^[^0-9]*//;p;}' Zend/zend_modules.h` if test "x${vzend}" != "x%{zendver}"; then : Error: Upstream Zend ABI version is now ${vzend}, expecting %{zendver}. : Update the zendver macro and rebuild. exit 1 fi # Safety check for PDO ABI version change vpdo=`sed -n '/#define PDO_DRIVER_API/{s/.*[ ]//;p}' ext/pdo/php_pdo_driver.h` if test "x${vpdo}" != "x%{pdover}"; then : Error: Upstream PDO ABI version is now ${vpdo}, expecting %{pdover}. : Update the pdover macro and rebuild. exit 1 fi # Check for some extension version ver=$(sed -n '/#define PHP_OCI8_VERSION /{s/.* "//;s/".*$//;p}' ext/oci8/php_oci8.h) if test "$ver" != "%{oci8ver}"; then : Error: Upstream OCI8 version is now ${ver}, expecting %{oci8ver}. : Update the oci8ver macro and rebuild. exit 1 fi ver=$(sed -n '/#define PHP_ZENDOPCACHE_VERSION /{s/.* "//;s/".*$//;p}' ext/opcache/ZendAccelerator.h) if test "$ver" != "%{opcachever}"; then : Error: Upstream OPCACHE version is now ${ver}, expecting %{opcachever}. : Update the opcachever macro and rebuild. exit 1 fi # https://bugs.php.net/63362 - Not needed but installed headers. # Drop some Windows specific headers to avoid installation, # before build to ensure they are really not needed. rm -f TSRM/tsrm_win32.h \ TSRM/tsrm_config.w32.h \ Zend/zend_config.w32.h \ ext/mysqlnd/config-win.h \ ext/standard/winver.h \ main/win32_internal_function_disabled.h \ main/win95nt.h # Fix some bogus permissions find . -name \*.[ch] -exec chmod 644 {} \; chmod 644 README.* # Create the macros.php files sed -e "s/@PHP_APIVER@/%{apiver}%{isasuffix}/" \ -e "s/@PHP_ZENDVER@/%{zendver}%{isasuffix}/" \ -e "s/@PHP_PDOVER@/%{pdover}%{isasuffix}/" \ -e "s/@PHP_VERSION@/%{version}/" \ -e "s:@LIBDIR@:%{_libdir}:" \ -e "s:@ETCDIR@:%{_sysconfdir}:" \ -e "s:@INCDIR@:%{_includedir}:" \ -e "s:@BINDIR@:%{_bindir}:" \ -e "s:@SCL@:%{?scl:%{scl}_}:" \ %{SOURCE3} | tee macros.php # php-fpm configuration files for tmpfiles.d # TODO echo "d /run/php-fpm 755 root root" >php-fpm.tmpfiles # Some extensions have their own configuration file cp %{SOURCE50} 10-opcache.ini cp %{SOURCE51} . sed -e 's:%{_root_sysconfdir}:%{_sysconfdir}:' \ -i 10-opcache.ini %build # aclocal workaround - to be improved %if 0%{?fedora} >= 11 || 0%{?rhel} >= 6 cat `aclocal --print-ac-dir`/{libtool,ltoptions,ltsugar,ltversion,lt~obsolete}.m4 >>aclocal.m4 %endif # Force use of system libtool: libtoolize --force --copy %if 0%{?fedora} >= 11 || 0%{?rhel} >= 6 cat `aclocal --print-ac-dir`/{libtool,ltoptions,ltsugar,ltversion,lt~obsolete}.m4 >build/libtool.m4 %else cat `aclocal --print-ac-dir`/libtool.m4 > build/libtool.m4 %endif # Regenerate configure scripts (patches change config.m4's) touch configure.in ./buildconf --force CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-pointer-sign" export CFLAGS # Install extension modules in %{_libdir}/php/modules. EXTENSION_DIR=%{_libdir}/php/modules; export EXTENSION_DIR # Set PEAR_INSTALLDIR to ensure that the hard-coded include_path # includes the PEAR directory even though pear is packaged # separately. PEAR_INSTALLDIR=%{_datadir}/pear; export PEAR_INSTALLDIR # Shell function to configure and build a PHP tree. build() { # Old/recent bison version seems to produce a broken parser; # upstream uses GNU Bison 2.3. Workaround: mkdir Zend && cp ../Zend/zend_{language,ini}_{parser,scanner}.[ch] Zend # Always static: # date, ereg, filter, libxml, reflection, spl: not supported # hash: for PHAR_SIG_SHA256 and PHAR_SIG_SHA512 # session: dep on hash, used by soap and wddx # pcre: used by filter, zip # pcntl, readline: only used by CLI sapi # openssl: for PHAR_SIG_OPENSSL # zlib: used by image ln -sf ../configure %configure \ --cache-file=../config.cache \ --with-libdir=%{_lib} \ --with-config-file-path=%{_sysconfdir} \ --with-config-file-scan-dir=%{_sysconfdir}/php.d \ --disable-debug \ --with-pic \ --disable-rpath \ --without-pear \ --with-exec-dir=%{_bindir} \ --with-freetype-dir=%{_root_prefix} \ --with-png-dir=%{_root_prefix} \ --with-xpm-dir=%{_root_prefix} \ %if %{with_vpx} --with-vpx-dir=%{_root_prefix} \ %endif --enable-gd-native-ttf \ %if %{with_t1lib} --with-t1lib=%{_root_prefix} \ %endif --without-gdbm \ --with-jpeg-dir=%{_root_prefix} \ --with-openssl \ %if %{with_libpcre} --with-pcre-regex=%{_root_prefix} \ %endif --with-zlib \ --with-layout=GNU \ --with-kerberos \ --with-libxml-dir=%{_root_prefix} \ --with-system-tzdata \ --with-mhash \ %if %{with_dtrace} --enable-dtrace \ %endif $* if test $? != 0; then tail -500 config.log : configure failed exit 1 fi make %{?_smp_mflags} } # Build /usr/bin/php-cgi with the CGI SAPI, and most the shared extensions pushd build-cgi build --libdir=%{_libdir}/php \ --enable-pcntl \ --enable-opcache \ --enable-phpdbg \ %if %{with_imap} --with-imap=shared --with-imap-ssl \ %endif --enable-mbstring=shared \ --enable-mbregex \ %if %{with_libgd} --with-gd=shared,%{_root_prefix} \ %else --with-gd=shared \ %endif --with-gmp=shared \ --enable-calendar=shared \ --enable-bcmath=shared \ --with-bz2=shared \ --enable-ctype=shared \ --enable-dba=shared --with-db4=%{_root_prefix} \ --with-tcadb=%{_root_prefix} \ --enable-exif=shared \ --enable-ftp=shared \ --with-gettext=shared \ --with-iconv=shared \ --enable-sockets=shared \ --enable-tokenizer=shared \ --with-xmlrpc=shared \ --with-ldap=shared --with-ldap-sasl \ --enable-mysqlnd=shared \ --with-mysql=shared,mysqlnd \ --with-mysqli=shared,mysqlnd \ --with-mysql-sock=%{mysql_sock} \ %if %{with_oci8} --with-oci8=shared,instantclient,%{_root_libdir}/oracle/%{oraclever}/client64/lib,%{oraclever} \ --with-pdo-oci=shared,instantclient,%{_root_prefix},%{oraclever} \ %endif %if %{with_interbase} --with-interbase=shared,%{_libdir}/firebird \ --with-pdo-firebird=shared,%{_libdir}/firebird \ %endif --enable-dom=shared \ --with-pgsql=shared \ --enable-simplexml=shared \ --enable-xml=shared \ --enable-wddx=shared \ --with-snmp=shared,%{_root_prefix} \ --enable-soap=shared \ --with-xsl=shared,%{_root_prefix} \ --enable-xmlreader=shared --enable-xmlwriter=shared \ --with-curl=shared,%{_root_prefix} \ --enable-pdo=shared \ --with-pdo-odbc=shared,unixODBC,%{_root_prefix} \ --with-pdo-mysql=shared,mysqlnd \ --with-pdo-pgsql=shared,%{_root_prefix} \ --with-pdo-sqlite=shared,%{_root_prefix} \ %if %{with_sqlite3} --with-sqlite3=shared,%{_root_prefix} \ %else --without-sqlite3 \ %endif %if %{with_zip} --enable-zip=shared \ %endif --without-readline \ --with-libedit \ --with-pspell=shared \ --enable-phar=shared \ %if %{with_mcrypt} --with-mcrypt=shared,%{_root_prefix} \ %endif %if %{with_tidy} --with-tidy=shared,%{_root_prefix} \ %endif %if %{with_mssql} --with-mssql=shared,%{_root_prefix} \ --with-pdo-dblib=shared,%{_root_prefix} \ %endif --enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \ --enable-shmop=shared \ --enable-posix=shared \ --with-unixODBC=shared,%{_root_prefix} \ --enable-intl=shared \ --with-icu-dir=%{_root_prefix} \ %if %{with_enchant} --with-enchant=shared,%{_root_prefix} \ %endif %if %{with_recode} --with-recode=shared,%{_root_prefix} \ %endif --enable-fileinfo=shared popd without_shared="--without-gd \ --disable-dom --disable-dba --without-unixODBC \ --disable-opcache \ --disable-xmlreader --disable-xmlwriter \ --without-sqlite3 --disable-phar --disable-fileinfo \ --without-pspell --disable-wddx \ --without-curl --disable-posix --disable-xml \ --disable-simplexml --disable-exif --without-gettext \ --without-iconv --disable-ftp --without-bz2 --disable-ctype \ --disable-shmop --disable-sockets --disable-tokenizer \ --disable-sysvmsg --disable-sysvshm --disable-sysvsem" # Build Apache module, and the CLI SAPI, /usr/bin/php pushd build-apache build --with-apxs2=%{_httpd_apxs} \ --libdir=%{_libdir}/php \ %if %{with_lsws} --with-litespeed \ %endif --without-mysql \ --disable-pdo \ ${without_shared} popd # Build php-fpm pushd build-fpm build --enable-fpm \ %if %{with_systemdfull} --with-fpm-systemd \ %endif --libdir=%{_libdir}/php \ --without-mysql \ --disable-pdo \ ${without_shared} popd %check %if %runselftest cd build-apache # Run tests, using the CLI SAPI export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2 export SKIP_ONLINE_TESTS=1 unset TZ LANG LC_ALL if ! make test; then set +x for f in $(find .. -name \*.diff -type f -print); do if ! grep -q XFAIL "${f/.diff/.phpt}" then echo "TEST FAILURE: $f --" cat "$f" echo -e "\n-- $f result ends." fi done set -x #exit 1 fi unset NO_INTERACTION REPORT_EXIT_STATUS MALLOC_CHECK_ %endif %install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT # Install the php-fpm binary make -C build-fpm install-fpm \ INSTALL_ROOT=$RPM_BUILD_ROOT # Install everything from the CGI SAPI build make -C build-cgi install \ INSTALL_ROOT=$RPM_BUILD_ROOT # Install the default configuration file and icons install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/ install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/php.ini # For third-party packaging: install -m 755 -d $RPM_BUILD_ROOT%{_datadir}/php sed -e 's/libphp5/lib%{name}5/' %{SOURCE9} >modconf # install the DSO install -m 755 -d $RPM_BUILD_ROOT%{_httpd_moddir} install -m 755 build-apache/libs/libphp5.so $RPM_BUILD_ROOT%{_httpd_moddir} # Apache config fragment install -m 755 -d $RPM_BUILD_ROOT%{_httpd_contentdir}/icons install -m 644 php.gif $RPM_BUILD_ROOT%{_httpd_contentdir}/icons/%{name}.gif %if %{?scl:1}0 install -m 755 -d $RPM_BUILD_ROOT%{_root_httpd_moddir} ln -s %{_httpd_moddir}/libphp5.so $RPM_BUILD_ROOT%{_root_httpd_moddir}/lib%{name}5.so %endif %if "%{_httpd_modconfdir}" == "%{_httpd_confdir}" # Single config file with httpd < 2.4 (RHEL <= 6) install -D -m 644 modconf $RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf cat %{SOURCE1} >>$RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf %else # Dual config file with httpd >= 2.4 (RHEL >= 7) install -D -m 644 modconf $RPM_BUILD_ROOT%{_httpd_modconfdir}/10-%{name}.conf install -D -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf %if %{with_httpd2410} cat %{SOURCE10} >>$RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf %endif %endif sed -e 's:/var/lib:%{_localstatedir}/lib:' \ -i $RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php.d install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/session install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/wsdlcache %if %{with_lsws} install -m 755 build-apache/sapi/litespeed/php $RPM_BUILD_ROOT%{_bindir}/lsphp %endif # PHP-FPM stuff # Log install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/log/php-fpm install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/run/php-fpm # Config install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf sed -e 's:/run:%{_localstatedir}/run:' \ -e 's:/var/log:%{_localstatedir}/log:' \ -e 's:/etc:%{_sysconfdir}:' \ -i $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf install -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf sed -e 's:/var/lib:%{_localstatedir}/lib:' \ -e 's:/var/log:%{_localstatedir}/log:' \ -i $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf mv $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf.default . # tmpfiles.d # install -m 755 -d $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d # install -m 644 php-fpm.tmpfiles $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d/php-fpm.conf # install systemd unit files and scripts for handling server startup %if %{with_systemdmax} # this folder requires systemd >= 204 install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/%{?scl_prefix}php-fpm.service.d %endif %if %{with_systemd} install -m 755 -d $RPM_BUILD_ROOT%{_unitdir} install -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_unitdir}/%{?scl_prefix}php-fpm.service sed -e 's:/run:%{_localstatedir}/run:' \ -e 's:/etc:%{_sysconfdir}:' \ -e 's:/usr/sbin:%{_sbindir}:' \ -i $RPM_BUILD_ROOT%{_unitdir}/%{?scl_prefix}php-fpm.service %else # Service install -m 755 -d $RPM_BUILD_ROOT%{_root_initddir} install -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{_root_initddir}/%{?scl_prefix}php-fpm # Needed relocation for SCL sed -e '/php-fpm.pid/s:/var:%{_localstatedir}:' \ -e '/subsys/s/php-fpm/%{?scl_prefix}php-fpm/' \ -e 's:/etc/sysconfig/php-fpm:%{_sysconfdir}/sysconfig/php-fpm:' \ -e 's:/etc/php-fpm.conf:%{_sysconfdir}/php-fpm.conf:' \ -e 's:/usr/sbin:%{_sbindir}:' \ -i $RPM_BUILD_ROOT%{_root_initddir}/%{?scl_prefix}php-fpm %endif # LogRotate install -m 755 -d $RPM_BUILD_ROOT%{_root_sysconfdir}/logrotate.d install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_root_sysconfdir}/logrotate.d/%{?scl_prefix}php-fpm sed -e 's:/run:%{_localstatedir}/run:' \ -e 's:/var/log:%{_localstatedir}/log:' \ -i $RPM_BUILD_ROOT%{_root_sysconfdir}/logrotate.d/%{?scl_prefix}php-fpm # Environment file install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/php-fpm # Fix the link (cd $RPM_BUILD_ROOT%{_bindir}; ln -sfn phar.phar phar) # make the cli commands available in standard root for SCL build %if 0%{?scl:1} install -m 755 -d $RPM_BUILD_ROOT%{_root_bindir} ln -s %{_bindir}/php $RPM_BUILD_ROOT%{_root_bindir}/%{scl} ln -s %{_bindir}/phar.phar $RPM_BUILD_ROOT%{_root_bindir}/%{scl_prefix}phar ln -s %{_bindir}/phpdbg $RPM_BUILD_ROOT%{_root_bindir}/%{scl_prefix}phpdbg %if %{with_lsws} ln -s %{_bindir}/lsphp $RPM_BUILD_ROOT%{_root_bindir}/ls%{scl} %endif %endif # Generate files lists and stub .ini files for each subpackage for mod in pgsql odbc ldap snmp xmlrpc \ mysqlnd mysql mysqli pdo_mysql \ %if %{with_imap} imap \ %endif mbstring gd dom xsl soap bcmath dba xmlreader xmlwriter \ simplexml bz2 calendar ctype exif ftp gettext gmp iconv \ sockets tokenizer opcache \ pdo pdo_pgsql pdo_odbc pdo_sqlite \ %if %{with_sqlite3} sqlite3 \ %endif %if %{with_oci8} oci8 pdo_oci \ %endif %if %{with_interbase} interbase pdo_firebird \ %endif %if %{with_enchant} enchant \ %endif phar fileinfo intl \ %if %{with_mcrypt} mcrypt \ %endif %if %{with_tidy} tidy \ %endif %if %{with_mssql} pdo_dblib mssql \ %endif %if %{with_recode} recode \ %endif %if %{with_zip} zip \ %endif pspell curl wddx xml \ posix shmop sysvshm sysvsem sysvmsg do # for extension load order case $mod in opcache) # Zend extensions ini=10-${mod}.ini;; pdo_*|mysql|mysqli|wddx|xmlreader|xmlrpc) # Extensions with dependencies on 20-* ini=30-${mod}.ini;; *) # Extensions with no dependency ini=20-${mod}.ini;; esac # some extensions have their own config file if [ -f ${ini} ]; then cp -p ${ini} $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} else cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} < files.${mod} <> files.xml # mysqlnd cat files.mysql \ files.mysqli \ files.pdo_mysql \ >> files.mysqlnd # Split out the PDO modules %if %{with_mssql} cat files.pdo_dblib >> files.mssql %endif cat files.pdo_pgsql >> files.pgsql cat files.pdo_odbc >> files.odbc %if %{with_oci8} cat files.pdo_oci >> files.oci8 %endif %if %{with_interbase} cat files.pdo_firebird >> files.interbase %endif # sysv* and posix in packaged in php-process cat files.shmop files.sysv* files.posix > files.process # Package sqlite3 and pdo_sqlite with pdo; isolating the sqlite dependency # isn't useful at this time since rpm itself requires sqlite. cat files.pdo_sqlite >> files.pdo %if %{with_sqlite3} cat files.sqlite3 >> files.pdo %endif # Package zip, curl, phar and fileinfo in -common. cat files.curl files.phar files.fileinfo \ files.exif files.gettext files.iconv files.calendar \ files.ftp files.bz2 files.ctype files.sockets \ files.tokenizer > files.common %if %{with_zip} cat files.zip >> files.common %endif # The default Zend OPcache blacklist file install -m 644 opcache-default.blacklist $RPM_BUILD_ROOT%{_sysconfdir}/php.d/opcache-default.blacklist # Install the macros file: install -m 644 -D macros.php \ $RPM_BUILD_ROOT%{macrosdir}/macros.%{name} # Remove unpackaged files rm -rf $RPM_BUILD_ROOT%{_libdir}/php/modules/*.a \ $RPM_BUILD_ROOT%{_bindir}/{phptar} \ $RPM_BUILD_ROOT%{_datadir}/pear \ $RPM_BUILD_ROOT%{_libdir}/libphp5.la # Remove irrelevant docs rm -f README.{Zeus,QNX,CVS-RULES} %clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT rm files.* macros.* %if ! %{with_httpd2410} %pre fpm # Add the "apache" user (to avoid pulling httpd in our dep) getent group apache >/dev/null || \ groupadd -g 48 -r apache getent passwd apache >/dev/null || \ useradd -r -u 48 -g apache -s /sbin/nologin \ -d %{_httpd_contentdir} -c "Apache" apache exit 0 %endif %post fpm %if 0%{?systemd_post:1} %systemd_post %{?scl:%{scl}-}php-fpm.service %else if [ $1 = 1 ]; then # Initial installation %if %{with_systemd} /bin/systemctl daemon-reload >/dev/null 2>&1 || : %else /sbin/chkconfig --add %{?scl_prefix}php-fpm %endif fi %endif %preun fpm %if 0%{?systemd_preun:1} %systemd_preun %{?scl:%{scl}-}php-fpm.service %else if [ $1 = 0 ]; then # Package removal, not upgrade %if %{with_systemd} /bin/systemctl --no-reload disable %{?scl_prefix}php-fpm.service >/dev/null 2>&1 || : /bin/systemctl stop %{?scl_prefix}php-fpm.service >/dev/null 2>&1 || : %else /sbin/service %{?scl_prefix}php-fpm stop >/dev/null 2>&1 /sbin/chkconfig --del %{?scl_prefix}php-fpm %endif fi %endif %postun fpm %if 0%{?systemd_postun_with_restart:1} %systemd_postun_with_restart %{?scl:%{scl}-}php-fpm.service %else %if %{with_systemd} /bin/systemctl daemon-reload >/dev/null 2>&1 || : if [ $1 -ge 1 ]; then # Package upgrade, not uninstall /bin/systemctl try-restart %{?scl_prefix}php-fpm.service >/dev/null 2>&1 || : fi %else if [ $1 -ge 1 ]; then /sbin/service %{?scl_prefix}php-fpm condrestart >/dev/null 2>&1 || : fi %endif %endif # Handle upgrading from SysV initscript to native systemd unit. # We can tell if a SysV version of php-fpm was previously installed by # checking to see if the initscript is present. %triggerun fpm -- %{?scl_prefix}php-fpm %if %{with_systemd} if [ -f /etc/rc.d/init.d/%{?scl_prefix}php-fpm ]; then # Save the current service runlevel info # User must manually run systemd-sysv-convert --apply php-fpm # to migrate them to systemd targets /usr/bin/systemd-sysv-convert --save %{?scl_prefix}php-fpm >/dev/null 2>&1 || : # Run these because the SysV package being removed won't do them /sbin/chkconfig --del %{?scl_prefix}php-fpm >/dev/null 2>&1 || : /bin/systemctl try-restart %{?scl_prefix}php-fpm.service >/dev/null 2>&1 || : fi %endif %{!?_licensedir:%global license %%doc} %files %defattr(-,root,root) %{_httpd_moddir}/libphp5.so %if 0%{?scl:1} %dir %{_libdir}/httpd %dir %{_libdir}/httpd/modules %{_root_httpd_moddir}/lib%{name}5.so %endif %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/session %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/wsdlcache %config(noreplace) %{_httpd_confdir}/%{name}.conf %if "%{_httpd_modconfdir}" != "%{_httpd_confdir}" %config(noreplace) %{_httpd_modconfdir}/10-%{name}.conf %endif %{_httpd_contentdir}/icons/%{name}.gif %files common -f files.common %defattr(-,root,root) %doc CODING_STANDARDS CREDITS EXTENSIONS NEWS README* %license LICENSE Zend/ZEND_* TSRM_LICENSE regex_COPYRIGHT %license libmagic_LICENSE %license phar_LICENSE %doc php.ini-* %config(noreplace) %{_sysconfdir}/php.ini %dir %{_sysconfdir}/php.d %dir %{_libdir}/php %dir %{_libdir}/php/modules %dir %{_localstatedir}/lib/php %dir %{_datadir}/php %files cli %defattr(-,root,root) %{_bindir}/php %{_bindir}/php-cgi %{_bindir}/phar.phar %{_bindir}/phar # provides phpize here (not in -devel) for pecl command %{_bindir}/phpize %{_mandir}/man1/php.1* %{_mandir}/man1/php-cgi.1* %{_mandir}/man1/phar.1* %{_mandir}/man1/phar.phar.1* %{_mandir}/man1/phpize.1* %doc sapi/cgi/README* sapi/cli/README %if 0%{?scl:1} %{_root_bindir}/%{scl} %{_root_bindir}/%{scl_prefix}phar %endif %files dbg %defattr(-,root,root) %{_bindir}/phpdbg %{_mandir}/man1/phpdbg.1* %doc sapi/phpdbg/{README.md,CREDITS} %if 0%{?scl:1} %{_root_bindir}/%{scl_prefix}phpdbg %endif %files fpm %defattr(-,root,root) %doc php-fpm.conf.default %license fpm_LICENSE %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/session %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/wsdlcache %if %{with_httpd2410} %config(noreplace) %{_httpd_confdir}/%{name}.conf %endif %config(noreplace) %{_sysconfdir}/php-fpm.conf %config(noreplace) %{_sysconfdir}/php-fpm.d/www.conf %config(noreplace) %{_root_sysconfdir}/logrotate.d/%{?scl_prefix}php-fpm %config(noreplace) %{_sysconfdir}/sysconfig/php-fpm # %{_prefix}/lib/tmpfiles.d/php-fpm.conf %if %{with_systemd} %{_unitdir}/%{?scl_prefix}php-fpm.service %if %{with_systemdmax} %dir %{_sysconfdir}/systemd/system/%{?scl_prefix}php-fpm.service.d %endif %else %{_root_initddir}/%{?scl_prefix}php-fpm %endif %{_sbindir}/php-fpm %dir %{_sysconfdir}/php-fpm.d # log owned by apache for log %attr(770,apache,root) %dir %{_localstatedir}/log/php-fpm %dir %{_localstatedir}/run/php-fpm %{_mandir}/man8/php-fpm.8* %dir %{_datadir}/fpm %{_datadir}/fpm/status.html %if %{with_lsws} %files litespeed %defattr(-,root,root) %{_bindir}/lsphp %if 0%{?scl:1} %{_root_bindir}/ls%{scl} %endif %endif %files devel %defattr(-,root,root) %{_bindir}/php-config %{_includedir}/php %{_libdir}/php/build %{_mandir}/man1/php-config.1* %{macrosdir}/macros.%{name} %files pgsql -f files.pgsql %files odbc -f files.odbc %if %{with_imap} %files imap -f files.imap %endif %files ldap -f files.ldap %files snmp -f files.snmp %files xml -f files.xml %files xmlrpc -f files.xmlrpc %files mbstring -f files.mbstring %defattr(-,root,root,-) %license libmbfl_LICENSE %license oniguruma_COPYING %license ucgendat_LICENSE %files gd -f files.gd %defattr(-,root,root,-) %if ! %{with_libgd} %license libgd_README %license libgd_COPYING %endif %files soap -f files.soap %files bcmath -f files.bcmath %defattr(-,root,root,-) %license libbcmath_COPYING %files gmp -f files.gmp %files dba -f files.dba %files pdo -f files.pdo %if %{with_mcrypt} %files mcrypt -f files.mcrypt %endif %if %{with_tidy} %files tidy -f files.tidy %endif %if %{with_mssql} %files mssql -f files.mssql %endif %files pspell -f files.pspell %files intl -f files.intl %files process -f files.process %if %{with_recode} %files recode -f files.recode %endif %if %{with_interbase} %files interbase -f files.interbase %endif %if %{with_enchant} %files enchant -f files.enchant %endif %files mysqlnd -f files.mysqlnd %files opcache -f files.opcache %config(noreplace) %{_sysconfdir}/php.d/opcache-default.blacklist %if %{with_oci8} %files oci8 -f files.oci8 %endif %changelog * Fri Aug 29 2014 Remi Collet 5.6.0-1.1 - enable libvpx on EL 6 (with libvpx 1.3.0) - add php56-phpdbg command in base system * Thu Aug 28 2014 Remi Collet 5.6.0-1 - PHP 5.6.0 is GA - add lsphp56 command in base system * Sun Aug 24 2014 Remi Collet - 5.6.0-0.1.RC4 - initial spec for PHP 5.6 as Software Collection - adapted from php 5.6 spec file from remi repository - adapted from php 5.5 spec file from rhscl 1.1