Cannot start apache2 with php5 due to missing sqlite3

Tom Brice tomtoday at gmail.com
Fri Mar 30 20:07:00 PDT 2007


On Mar 14, 2007, at 9:59 PM, Eric Cronin wrote:

>>
>> MacPorts philosophy is to not use the system's version of a  
>> software package unless absolutely necessary. See the FAQ on the  
>> web site. Therefore if software requires sqlite3 it should use the  
>> MacPorts version of sqlite3, not the system's version.
>>
>> I see with "otool -L /opt/local/apache2/bin/httpd" that on my  
>> 10.4.8 PPC system it depends on /usr/lib/libsqlite3.0.dylib. So  
>> the apache2 port should be modified to depend on the sqlite3 port  
>> and to use that version of sqlite3 instead.
>>
>> In the original thread on this topic to which you refer, I thought  
>> php5 was causing the problem. But "otool -L /opt/local/bin/php"  
>> and "otool -L /opt/local/apache2/modules/libphp5.so" make no  
>> mention of a dependency on sqlite3 so I'm now inclined to think  
>> it's the apache2 port that needs to be changed, not the php5 port.
>>
>> I'm CCing the apache2 port maintainer on this.
>
> As another datapoint, I got bit with this last night after  
> rebooting a 10.3.9 server after applying the security update.  My  
> apache2 was (and is) linked against the MacPorts sqlite:
>
>         /opt/local/lib/libsqlite3.0.dylib (compatibility version  
> 9.0.0, current version 9.6.0)
>
> and none of the php libraries seemed to be.  Nevertheless, apache  
> would not run until I commented out the AddModule for php and php  
> include.  I rebuilt the whole dependency tree several times and I'm  
> fairly certain its not an issue due to libsqlite being updated or  
> any such thing.  The missing symbols exist in the libsqlite.dylib  
> if I dump it with nm, so it seems that the php module is throwing  
> off the dynamic linker somehow at runtime.  I wasn't using php for  
> anything any more so I just disabled it, I was unable to find a fix.
>
> Thanks,
> ERic

I had a chance to come back to this today.  I updated the MacPorts  
1.4.0 and selfupdate/synced then reinstalled everything from  
scratch.  Unfortunately I had the same results as before, apache2  
working without mod_php... no joy with php5/apache2.

I too have apache2 linked to the proper macports sqlite3 (as above)  
but this as well:

# otool -L /opt/local/apache2/modules/libphp5.so
/opt/local/apache2/modules/libphp5.so:
	...
	/opt/local/lib/libsqlite3.0.dylib (compatibility version 9.0.0,  
current version 9.6.0)
	...

After a little reading I see that PHP5 comes with sqlite3.  The only  
conclusion that I can come to is that something is linking to the  
supplied sqlite3 rather than MacPorts version and the supplied  
sqlite3 fails on OS X 10.3.9 for some reason.  Here's how I came to  
this end:

* The php5 install that I cannot get to work with apache2 via mod_php  
does work in the CLI.
* In the darwin 7 variant of the php5 Portfile I added "--with-pdo- 
sqlite=${prefix}/bin/sqlite3" to the configure.args-append line.   
Building this still fails mod_php usage with apache2.
* I changed the darwin 7 variant to "configure.args-append   -- 
without-sqlite --without-pdo-sqlite" and reintsalled.  THIS WORKS  
with mod_php and apache2!!

I wasn't using sqlite3 with php before so I can live without it.   
However, I think it might be "fixable" by making sure that php uses  
the MacPorts sqlite3 rather that the supplied version.  By adding the  
appropriate DIR to "--with-sqlite=DIR --with-pdo-sqlite=DIR" it might  
work.  I guess it should be "{prefix}/bin/sqlite3".  the configure  
file states:
	
	"Use --with-sqlite=DIR to specify DIR where
	Sqlite include and library files are located,
	if not using bundled library."

I'm not sure what the correct path for include and library files  
might be.

Or I might be cracked.  Anyway, I'm just happy to have php5 working  
on this Panther box.  Now I can migrate some internal tools and  
subversion repos to this box.

Tom



More information about the macports-users mailing list