|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-08-07 19:05 UTC] scarfboy at yahoo dot com
I just compiled PHP 4.0.6 from the sources, (well, after fighting with it a bit, but never mind that) and apache won't load the module. When i try to start apache: Syntax error on line 147 of /etc/httpd/httpd.conf: Cannot load /usr/lib/apache/libphp4.so into server: undefined symbol: pam_end (line 147 is the one that loads the module) From both someone else's report and my trial and error, i figured it is the imap module that is the problem. I do have the libpam library and the function is in that library: # objdump -T /lib/libpam.so.0.72 | grep pam_end 00001b40 g DF .text 0000025f Base pam_end The thing is that the php module isn't linked with this. Now i don't know enough about all this funky dynamic stuff to fix this.. (or even know for sure that's the problem) but it strikes me that if the imap module depends on this library it should put that in its makefile or whereever. I can live without imap, but i do want it sometime.. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 06:00:02 2025 UTC |
ah... last time i tried to use cvs it was so annoying i decided it's an unnecessary evil. I was under the impression they were patches. well, whatever. anyhow, in the latest cvs, this problem is caught by the makefile. well, sort of. in config.log i see normal ``undefined reference to `whatever''' lines.. all starting with pam_. It can't find the libpam library. Which is weird, since it's in my LD_LIBRARY_PATH and all... The message configure itself gives is: ``configure: error: This c-client library is build with SSL support.'', and the message to ``Add --with-imap-ssl<=DIR> to your configure line. Check config.log for details.'' The relevant part of config.log: configure:24000: checking for IMAP support configure:24287: checking for pam_start in -lpam configure:24306: gcc -o conftest -g -O2 -DEAPI_MM -DSINGLE_LISTEN_UNSERIALIZED_ACCEPT -D_LARGEF/usr/i486-suse-linux/bin/ld: cannot find -lpam collect2: ld returned 1 exit status configure: failed program was: #line 24295 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pam_start(); int main() { pam_start() ; return 0; } configure:24334: checking for crypt in -lcrypt configure:24850: gcc -o conftest -g -O2 -DEAPI_MM -DSINGLE_LISTEN_UNSERIALIZED_ACCEPT -D_LARGEF/usr/lib/libc-client.so: undefined reference to `pam_end' /usr/lib/libc-client.so: undefined reference to `pam_authenticate' /usr/lib/libc-client.so: undefined reference to `pam_setcred' /usr/lib/libc-client.so: undefined reference to `pam_acct_mgmt' /usr/lib/libc-client.so: undefined reference to `pam_start' collect2: ld returned 1 exit status configure: failed program was: #line 24825 "configure" #include "confdefs.h" void mm_log(void){} void mm_dlog(void){} void mm_flags(void){} void mm_fatal(void){} void mm_critical(void){} void mm_nocritical(void){} void mm_notify(void){} void mm_login(void){} void mm_diskerror(void){} void mm_status(void){} void mm_lsub(void){} void mm_list(void){} void mm_exists(void){} void mm_searched(void){} void mm_expunged(void){} char mail_open(); int main() { mail_open(0,"",0); return 0; }obviously it should. just a obvious is that it doesn't. those requirements -were- filled, but just to humor you... libpam is in /lib. Somewhat weirdly, that's not in my LD_LIBRARY_PATH automatically, but -types- now it is (i did that before), and also in my ld.so.conf, and ldconfig has been run. ``ldconfig -v | grep pam'' shows: (i guess the `more than once' this is about it being in the config file and the environment setting? whatever.) ldconfig: Path `/lib' given more than once libpamc.so.0 -> libpamc.so.0.72 libpam_misc.so.0 -> libpam_misc.so.0.72 libpam.so.0 -> libpam.so.0.72 libpamc.so.0 -> libpamc.so.0.72 libpam_misc.so.0 -> libpam_misc.so.0.72 libpam.so.0 -> libpam.so.0.72 so it's definately there. Perhaps not exactly in the form php wants to see it, but even the symbol it's looking for , according to the last lines configure gives me: checking for pam_start in -lpam... no checking for crypt in -lcrypt... (cached) yes configure: error: This c-client library is build with SSL support. Add --with-imap-ssl<=DIR> to your configure line. Check config.log for details. ..are in /lib/libpam.so.0.72, according to objdump: (by the by, that (cached) thing strikes me as weird too as this is the first ./configure command i gave since i removed and untarred the directory) objdump -T /lib/libpam.so.0.72 | grep pam_start 00003a70 g DF .text 0000007a Base _pam_start_handlers 00002350 g DF .text 0000002d Base _pam_start_timer 00001da0 g DF .text 0000030c Base pam_start (sorry for the wrapping, that's this input field) So it's not that libpam is somehow wrong. Forigive me for asking, but isn't that a library that linux doesn't run without in the first place? Anyhow, my config.log from the point where it starts checking stuff for imap (in case anything's changed): configure:24000: checking for IMAP support configure:24287: checking for pam_start in -lpam configure:24306: gcc -o conftest -g -O2 -DEAPI_MM -DSINGLE_LISTEN_UNSERIALIZED_ACCEPT /usr/i486-suse-linux/bin/ld: cannot find -lpam collect2: ld returned 1 exit status configure: failed program was: #line 24295 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pam_start(); int main() { pam_start() ; return 0; } configure:24334: checking for crypt in -lcrypt configure:24850: gcc -o conftest -g -O2 -DEAPI_MM -DSINGLE_LISTEN_UNSERIALIZED_ACCEPT /usr/lib/libc-client.so: undefined reference to `pam_end' /usr/lib/libc-client.so: undefined reference to `pam_authenticate' /usr/lib/libc-client.so: undefined reference to `pam_setcred' /usr/lib/libc-client.so: undefined reference to `pam_acct_mgmt' /usr/lib/libc-client.so: undefined reference to `pam_start' collect2: ld returned 1 exit status configure: failed program was: #line 24825 "configure" #include "confdefs.h" void mm_log(void){} void mm_dlog(void){} void mm_flags(void){} void mm_fatal(void){} void mm_critical(void){} void mm_nocritical(void){} void mm_notify(void){} void mm_login(void){} void mm_diskerror(void){} void mm_status(void){} void mm_lsub(void){} void mm_list(void){} void mm_exists(void){} void mm_searched(void){} void mm_expunged(void){} char mail_open(); int main() { mail_open(0,"",0); return 0; } I guess the libc-client is the fallback option, except it won't work without SSL, which is somehow related to why this doesn't work either? (not that there's really an humanly (user-ly, whatever) understandable reason, or suggestion or alternative listed) As to the thing not compiling even without this imap weirdness, do i just start another bug thread? (oh, i guess i search for it first...)