Unable to compile PHP with both Apache2 and FPM support

Bug #52419 Unable to compile PHP with both Apache2 and FPM support
Submitted: 2010-07-23 18:19 UTC Modified: 2010-12-20 12:56 UTC
Votes:13
Avg. Score:4.2 ± 0.8
Reproduced:11 of 12 (91.7%)
Same Version:10 (90.9%)
Same OS:4 (36.4%)
From: php-bugs at majkl578 dot cz Assigned: jani (profile)
Status: Closed Package: Compile Failure
PHP Version: 5.3.3 OS: Linux Debian
Private report: No CVE-ID: None

 [2010-07-23 18:19 UTC] php-bugs at majkl578 dot cz

Description:
------------
PHP fails to compile with both Apache 2 module (option --with-apxs2) and FPM enabled (option --enable-fpm).

Test script:
---------------
Configure line:
./configure --prefix=/usr --sysconfdir=/etc --cache-file=./config.cache --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php/extensions --enable-bcmath=shared --with-bz2=shared --enable-calendar=shared --with-curl=shared --enable-exif=shared --enable-ftp=shared --with-gd --with-gettext=shared --with-gmp --with-imap=shared --with-imap-ssl --with-kerberos --with-ldap=shared --enable-mbstring=shared --with-mcrypt=shared --with-mhash=shared --without-mssql --with-mysql=shared,mysqlnd --with-mysqli=shared,mysqlnd --with-openssl --enable-pcntl=shared --enable-pdo=shared -with-pdo-mysql=shared --with-pdo-sqlite=shared --without-pgsql --with-pspell=shared --with-snmp=shared --with-sqlite=shared --with-sqlite3=shared --enable-sqlite-utf8 --enable-soap=shared --enable-sockets=shared --without-sybase-ct --enable-sysvmsg=shared --enable-sysvsem=shared --enable-sysvshm=shared --with-tidy=shared --without-unixODBC --with-xmlrpc=shared --with-xsl=shared --enable-zip=shared --with-zlib=shared --disable-short-tags --enable-debug --enable-cgi --enable-cli --with-pear --enable-zend-multibyte --with-apxs2=/usr/bin/apxs2 --enable-fpm

Actual result:
--------------
$ make -j 2
blahblahblah
Generating phar.php
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_ub_write':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:84: undefined reference to `ap_rwrite'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_header_handler':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:101: undefined reference to `apr_table_unset'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:105: undefined reference to `apr_table_clear'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:136: undefined reference to `ap_set_content_length'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:139: undefined reference to `apr_table_set'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:141: undefined reference to `apr_table_add'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_send_headers':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:164: undefined reference to `apr_pstrdup'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:167: undefined reference to `apr_table_set'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:176: undefined reference to `apr_pstrdup'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:176: undefined reference to `ap_set_content_type'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_read_post':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:202: undefined reference to `apr_brigade_flatten'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:203: undefined reference to `apr_brigade_cleanup'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:201: undefined reference to `ap_get_brigade'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_read_cookies':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:246: undefined reference to `apr_table_get'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_getenv':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:262: undefined reference to `apr_table_get'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_register_variables':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:271: undefined reference to `apr_table_elts'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_flush':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:311: undefined reference to `ap_rflush'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_log_message':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:324: undefined reference to `ap_log_error'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:326: undefined reference to `ap_log_rerror'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_sapi_log_message_ex':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:333: undefined reference to `ap_log_rerror'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_add_version':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:410: undefined reference to `ap_add_version_component'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_pre_config':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:419: undefined reference to `ap_mpm_query'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:421: undefined reference to `ap_log_error'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_server_startup':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:439: undefined reference to `apr_pool_userdata_get'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:446: undefined reference to `apr_pool_cleanup_null'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:446: undefined reference to `apr_pool_userdata_set'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:459: undefined reference to `apr_pool_cleanup_null'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:459: undefined reference to `apr_pool_cleanup_register'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_request_ctor':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:478: undefined reference to `apr_table_get'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:479: undefined reference to `apr_pstrdup'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:482: undefined reference to `apr_pstrdup'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:483: undefined reference to `apr_pstrdup'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:486: undefined reference to `apr_table_get'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:489: undefined reference to `apr_table_unset'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:490: undefined reference to `apr_table_unset'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:491: undefined reference to `apr_table_unset'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:492: undefined reference to `apr_table_unset'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:493: undefined reference to `ap_auth_type'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:494: undefined reference to `apr_table_get'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:499: undefined reference to `apr_pstrdup'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_ini_dtor':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:534: undefined reference to `apr_pool_cleanup_run'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_handler':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:556: undefined reference to `apr_palloc'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:561: undefined reference to `apr_pool_cleanup_null'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:561: undefined reference to `apr_pool_cleanup_register'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:609: undefined reference to `ap_add_common_vars'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:610: undefined reference to `ap_add_cgi_vars'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:616: undefined reference to `apr_brigade_create'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:651: undefined reference to `ap_update_mtime'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:652: undefined reference to `ap_set_last_modified'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:675: undefined reference to `apr_psprintf'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:674: undefined reference to `apr_table_set'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:683: undefined reference to `apr_bucket_eos_create'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:686: undefined reference to `ap_pass_brigade'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:692: undefined reference to `apr_brigade_cleanup'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_apache_child_init':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:702: undefined reference to `apr_pool_cleanup_null'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:702: undefined reference to `apr_pool_cleanup_register'
sapi/apache2handler/.libs/sapi_apache2.o: In function `php_ap2_register_hook':
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:707: undefined reference to `ap_hook_pre_config'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:708: undefined reference to `ap_hook_post_config'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:709: undefined reference to `ap_hook_handler'
/storage/php/php-5.3.3/sapi/apache2handler/sapi_apache2.c:710: undefined reference to `ap_hook_child_init'
sapi/apache2handler/.libs/apache_config.o: In function `real_value_hnd':
/storage/php/php-5.3.3/sapi/apache2handler/apache_config.c:68: undefined reference to `apr_pstrdup'
sapi/apache2handler/.libs/apache_config.o: In function `php_apache_phpini_set':
/storage/php/php-5.3.3/sapi/apache2handler/apache_config.c:116: undefined reference to `ap_server_root_relative'
sapi/apache2handler/.libs/apache_config.o: In function `create_php_config':
/storage/php/php-5.3.3/sapi/apache2handler/apache_config.c:225: undefined reference to `apr_palloc'
/storage/php/php-5.3.3/sapi/apache2handler/apache_config.c:229: undefined reference to `apr_pool_cleanup_null'
/storage/php/php-5.3.3/sapi/apache2handler/apache_config.c:229: undefined reference to `apr_pool_cleanup_register'
sapi/apache2handler/.libs/php_functions.o: In function `php_apache_lookup_uri':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:67: undefined reference to `ap_sub_req_lookup_uri'
sapi/apache2handler/.libs/php_functions.o: In function `zif_virtual':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:89: undefined reference to `ap_destroy_sub_req'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:99: undefined reference to `ap_rflush'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:101: undefined reference to `ap_run_sub_req'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:103: undefined reference to `ap_destroy_sub_req'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:106: undefined reference to `ap_destroy_sub_req'
sapi/apache2handler/.libs/php_functions.o: In function `zif_apache_lookup_uri':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:162: undefined reference to `ap_destroy_sub_req'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:167: undefined reference to `ap_destroy_sub_req'
sapi/apache2handler/.libs/php_functions.o: In function `zif_apache_request_headers':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:186: undefined reference to `apr_table_elts'
sapi/apache2handler/.libs/php_functions.o: In function `zif_apache_response_headers':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:210: undefined reference to `apr_table_elts'
sapi/apache2handler/.libs/php_functions.o: In function `zif_apache_note':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:234: undefined reference to `apr_table_get'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:237: undefined reference to `apr_table_set'
sapi/apache2handler/.libs/php_functions.o: In function `zif_apache_setenv':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:277: undefined reference to `apr_table_set'
sapi/apache2handler/.libs/php_functions.o: In function `zif_apache_getenv':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:313: undefined reference to `apr_table_get'
sapi/apache2handler/.libs/php_functions.o: In function `php_apache_get_version':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:328: undefined reference to `ap_get_server_version'
sapi/apache2handler/.libs/php_functions.o: In function `zif_apache_get_modules':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:356: undefined reference to `ap_loaded_modules'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:355: undefined reference to `ap_loaded_modules'
sapi/apache2handler/.libs/php_functions.o: In function `zm_info_apache':
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:383: undefined reference to `ap_loaded_modules'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:382: undefined reference to `ap_loaded_modules'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:413: undefined reference to `unixd_config'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:413: undefined reference to `unixd_config'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:413: undefined reference to `unixd_config'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:418: undefined reference to `ap_mpm_query'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:422: undefined reference to `apr_snprintf'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:428: undefined reference to `ap_server_root'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:437: undefined reference to `apr_table_elts'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:457: undefined reference to `apr_table_elts'
/storage/php/php-5.3.3/sapi/apache2handler/php_functions.c:466: undefined reference to `apr_table_elts'
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] Error 1
make: *** Waiting for unfinished jobs....

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports

 [2010-07-23 18:40 UTC] rasmus@php.net

hrm, it builds perfectly fine on my Debian box with your exact configure line.  
Are you sure your libapr package is installed correctly?  Try a make clean and 
reinstall your libapr.

 [2010-07-23 19:35 UTC] php-bugs at majkl578 dot cz

I've reinstalled libapr and libapr-dev, make clean'ed, then reconfigured and re-run compilation. Exactly same error.
Compiling them separately works fine.

Versions:
apache2: 2.2.15-6
libapr and libapr-dev: 1.4.2-3

 [2010-07-23 19:38 UTC] rasmus@php.net

Do you have access to another Debian box somewhere?  Or perhaps a clean VM?  A lot 
of the PHP developers are on Debian, myself included, so it would really surprise 
me if there was a general compile issue there.  And since I can't reproduce it 
with your exact configure line, there is something about your environment that is 
different.

 [2010-07-23 20:39 UTC] php-bugs at majkl578 dot cz

No, I don't, I've only this one. Maybe it's really (somehow) related to my environment, because I'm also unable to compile PHP with pecl binary even if '--with-pear' and '--enable-cli' are set...

 [2010-08-04 10:35 UTC] ali at aliziad dot clom

fyi:

I am also getting the same error with php 5.3.3 (/w apxs and fpm) on CentOS

-ali

 [2010-09-01 12:05 UTC] fat@php.net

I have a similar issue with the current PHP_5_3.

When the php-fpm is built, it's linked against :

sapi/apache2handler/mod_php5.lo
sapi/apache2handler/sapi_apache2.lo
sapi/apache2handler/apache_config.lo
sapi/apache2handler/php_functions.lo

I think it's somehow related to http://bugs.php.net/52498.

 [2010-09-01 14:29 UTC] fat@php.net

The problem is:

in the general Makefile there is:

BUILD_FPM = $(LIBTOOL) --mode=link $(CC) -export-dynamic $(CFLAGS_CLEAN) 
$(EXTRA_CFLAGS) $(EXTRA_LDFLAGS_PROGRAM) $(LDFLAGS) $(PHP_RPATHS) 
$(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(SAPI_EXTRA_LIBS) 
$(ZEND_EXTRA_LIBS) -o $(SAPI_FPM_PATH)

and 

PHP_SAPI_OBJS = sapi/apache2handler/mod_php5.lo 
sapi/apache2handler/sapi_apache2.lo sapi/apache2handler/apache_config.lo 
sapi/apache2handler/php_functions.lo sapi/fpm/fpm/fastcgi.lo sapi/fpm/fpm/fpm.lo 
sapi/fpm/fpm/fpm_children.lo sapi/fpm/fpm/fpm_cleanup.lo 
sapi/fpm/fpm/fpm_clock.lo sapi/fpm/fpm/fpm_conf.lo sapi/fpm/fpm/fpm_env.lo 
sapi/fpm/fpm/fpm_events.lo sapi/fpm/fpm/fpm_main.lo sapi/fpm/fpm/fpm_php.lo 
sapi/fpm/fpm/fpm_php_trace.lo sapi/fpm/fpm/fpm_process_ctl.lo 
sapi/fpm/fpm/fpm_request.lo sapi/fpm/fpm/fpm_shm.lo 
sapi/fpm/fpm/fpm_shm_slots.lo sapi/fpm/fpm/fpm_signals.lo 
sapi/fpm/fpm/fpm_sockets.lo sapi/fpm/fpm/fpm_status.lo sapi/fpm/fpm/fpm_stdio.lo 
sapi/fpm/fpm/fpm_unix.lo sapi/fpm/fpm/fpm_worker_pool.lo sapi/fpm/fpm/zlog.lo 
sapi/fpm/fpm/fpm_trace.lo sapi/fpm/fpm/fpm_trace_ptrace.lo 
main/internal_functions.lo

FPM is linked with apache but the apr lib is not known at compile time.

There is the same problem when compiling libphp5.so which is linked agains FPM 
object files and libevent is not known at compile time:

# make libs/libphp5.bundle

sapi/fpm/fpm/fpm_children.o: In function `fpm_children_make':
/LIBRE/dev/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_children.c:381: undefined 
reference to `event_reinit'

 [2010-09-01 17:42 UTC] fat@php.net

the problem is the same if compiling SAPI apache2handler with litespeed. The same 
with fpm and litespeed.

Is it possible to compile PHP with multiple SAPI ?

 [2010-09-02 12:22 UTC] james dot butler at sandfox dot co dot uk

I can confirm this is an issue on Centos 5.5 64bit
get exactly the same error when trying to compile with apxs AND fpm both enabled.
Removing either one from the config line results in successful compilation.

 [2010-09-02 12:25 UTC] pajoye@php.net

@fat@php.net

Yes, as long as they are all zts (x)or non thread safe.

 [2010-09-04 11:07 UTC] m dot ghadam at gmail dot com

I get the same error when tried to compile httpd with both --with-apxs2 and --enable-fpm option.
OS : CentOS 5.5 i686
Removing one of them results successfull compilation.

 [2010-09-04 14:38 UTC] hengjie at gmail dot com

Yes, I get exactly the same issue with CentOS 5.5 64bit.

 [2010-11-14 00:14 UTC] jani@php.net

-Status: Open +Status: Closed -Assigned To: +Assigned To: jani

 [2010-11-14 00:14 UTC] jani@php.net

Fixed in trunk. Now it's possible to build all binary SAPIs (CGI, FPM, CLI, etc) and one SAPI module like Apache.

 [2010-11-18 18:40 UTC] baldzius at gmail dot com

When can we expect this fix to be merged in 5.3? Thanks.

 [2010-11-18 21:55 UTC] jani@php.net

It is a feature not bug fix so never. In next 5.x release though. I might partially merge the configure error when trying to build multiple SAPIs the same time..

 [2010-12-20 12:56 UTC] jani@php.net

-Package: Tidy +Package: Compile Failure