Re: [PHP4BETA] [REF BUG: 4234] Re: [PHP4BETA] php4 and mysql
| From: | Glenn Little | Date: | Sat, 29 Apr 2000 03:40:26 +0000 |
| Subject: | Re: [PHP4BETA] [REF BUG: 4234] Re: [PHP4BETA] php4 and mysql | ||
| References: | 1 | Groups: | php.version4 |
| Request: | Send a blank email to php-version4+get-14160@lists.php.net to get a copy of this message | ||
Just got back and got to this mail. I've just submitted a bug
report, 4277. I agree, the LD_RUN_PATH env var is a workaround only.
I think it's better than having to have httpd running with LD_LIBRARY_PATH
set though, but feels like a kludge, and a lot of people may not
think to try it.
-glennAt 11:13 AM 4/26/00 , Joey wrote:
Glenn:It seems you are not the only one having the problem, nor does itseem limited to the Solaris platform. See http://bugs.php.net/?id=4234. Therefore, I am adding the PHP4 list back into the mix. I know Sascha is really busy right now, mainly bcz I keep bugging him, but I'm thinking he is probably the one who knows the best answer to the problem.In a nutshell, the libmysqlclient.so's directory is not gettingadded when compiling, at a minimum, php4 as a dso using an already built version of mysql.Yes, the LD_* environment vars will fix this, but it is not, IMHO,the /RIGHT/ way to do it. LD_LIBRARY_PATH and friends are pretty commonly looked at as a security hole, much like having "." in your PATH. But I'm sure not everyone will agree.If you could open another bug, mark it as Dynamic reloadingrelated, I will add what I know to the end, and we'll see if we can't figure out what is going on. Maybe it's time I understood the relationship between ld, libtool, and gcc better??--Joey SmithPlease forgive the long sig: *** Notice To Bulk Emailers: Attention! Pursuant to US Code, Title 47, Chapter 5, Subchapter II, 227, any & all unsolicited commercial e-mail sent to this address is subject to a download and archival fee in the amount of the $1500 US and copies will be forwarded to domain administrators. Emailing denotes acceptance of said terms! On Tue, 25 Apr 2000, Glenn Little wrote: Well, it turns out that if I setenv LD_RUN_PATH to be the path to the mysqlclient library, then do the config/make/install, the library gets that built into its search path, so at runtime that directory gets searched, and all is well. (By the way, it appears that LD_LIBRARY_PATH would work if it was set in the httpd's running environment. I don't really want to rely on that though). However, this doesn't seem right, does it? I sort of thought the install was supposed to be a little more bullet-proof than that. Seems like a kludgy solution, and not one that's friendly to your average sysadmin. Maybe I'm the only one having this problem, but I just don't have enough know-how to figure out how else that path is supposed to get in there. Given my "make" output, I'd think it would be there by virtue of the -L and -R flags (as you mentioned), but I don't understand the road to libphp4.so... something happens with libtool, something happens with apxs, and in the end after a "make install", you've got a new libphp4.so. Voila :-) Does it sound like a bug, or just a "that's the way it is"? I thought I saw some other messages go by while I was working on my previous problem that said things about making some env settings. Hmmm.... So, I'm not sure if I should bother the list with this now or not. Or clutter the bug reports site (seems like the more lame non-bugs that get reported, the less effective that site will really be). On the other hand, if this is going to catch other solaris installers... Also, you mentioned linking with the shipped mysql routines? Is that documented somewhere? Is that the preferred way to go instead of using --with-mysql=<my-own-install>?-glennFrom joey@samaritan.com Tue Apr 25 14:15:53 2000 Date: Tue, 25 Apr 2000 15:19:29 -0600 (MDT) From: Joey <joey@samaritan.com> To: Glenn Little <little@cs.ucsd.edu> Subject: Re: [PHP4BETA] php4 and mysql MIME-Version: 1.0 X-Status: X-Keywords: X-UID: 48461I'm not sure if you meant httpd, or libphp4.so, so I'll include both. It looks to me like libphp4.so is either not getting told the right path to find libmysqlclient at dynamic load time, or, actually... shouldn't it just statically link with libmysqlclient? I understand why libphp is a dynamic library, but why is it in turn built with a further dynamic dependency?What is the mechanism for building the right dynamic lib search path into libphp4.so?Sorry, human error. You were right, I needed libphp4.so. It is building against the dynamic libraries bcz that is what php links against for mysql support. I do not know if there is any way to build libphp4.so as a static lib. to be loaded or not. More of a question for Sascha, or one of the other guys.I imagine that putting libmysqlclient in /usr/lib would work, but I'm hesitant to do so since the solaris admin people here want to keep /usr/lib standard and pristine. I'd have to ask them to update tripwire, and rdist database, etc to move it. If you believe it's an important diagnostic to try, I can do it. I'd just prefer not.Again, I am kind of unclear myself on this, but I am mystified as to why you ld /ONLY/ looks in /usr/lib. Don't you have a /usr/local/lib? Why is it not being searched? There is a -R flag that should be getting passed to your linker at compile time that tells it where to look for loading libs. /web/mysql should be getting into that list. Looking through the man page for ld.so.1, I found the following:The runtime linker uses a prescribed search path for locat- ing the dynamic dependencies of an object. The default search paths are the runpath recorded in the object, fol- lowed by /usr/lib. The runpath is specified when the dynamic object is constructed using the -R option to ld(1). LD_LIBRARY_PATH can be used to indicate directories to be searched before the default directories.I'm pretty sure I saw that on the tail end of your make output, so why it isn't working is beyond me...I'd reccomend putting a short decription of the problem together and logging it as a bug, so that someone like Sascha can have a look at it.Another thing you may want to try is using the built-in mysql libs that are now shipped with PHP4. I imagine that should work a bit better at the linking point, as there has been a lot of collaboration between PHP and MySQL to get that working. But there are some problems (here and there) with the compile.-- PHP 4.0 Beta Mailing List <http://www.php.net/version4/> To unsubscribe, e-mail: php4beta-unsubscribe@lists.php.net For additional commands, e-mail: php4beta-help@lists.php.net To contact the list administrators, e-mail: php4beta-admin@lists.php.netThat's fine...wasn't sure if you guys were running any of that stuff. I can certainly understand not wanting to mess with that. Putting libmysqlclient in /usr/lib definitely /SHOULD/ work, but I think in your case it classifies as a "last resort".