Lebowtech Blog

Compling Php on Leopard (Osx) in Intel C2duo

| Comments

I recently updated my Powerbook G4 to a MacBook C2Duo, and I wanted to get working quickly so I cloned the hard drive from the PowerBook to the MacBook, and I was able to pick up working right where I left off, that is until I one of my Joomla projects stopped working.

One of my joomla projects was just returning me a blank page, no error message and nothing in the logs.. everything worked fine on the live sever, after about 6 hrs of banging my head on the keyboard, I had a genius idea. I powered up the old powerbook , and the project still worked there! I quickly realized the problem. I had done a custom compile of PHP on the powerbook, and it probably wasn’t working so well on the Intel MacBook.

The obvious solution was to recompile PHP, so I downloaded PHP 5.3, excited about the built in Mysql driver. Configure went fine, make went fine, and then I try to restart apache :

 org.apache.httpd[79275] httpd: Syntax error on line 114 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/libphp5.so into server: dlopen(/usr/libexec/apache2/libphp5.so, 10): no suitable image found.  Did find:\n\t/usr/libexec/apache2/libphp5.so: mach-o, but wrong architecture 

OY!

So I found a solution , recompile Apache, and I wasn’t really in the mood for that, so I figured I’d try an older version of php.

I tried PHP 5.2.10 , and after some twiddling with config options and reinstalling MySql, configure, make, make install, and now my project is working again.

here is the configure command I used

CFLAGS='-arch x86_64' ./configure --without-iconv --with-apxs2 --enable-pdo --with-zlib=/usr --with-curl --with-mcrypt --with-pdo_mysql=/usr/local/mysql-5.1.37-osx10.5-x86_64/bin/mysql_config --with-mysqli=/usr/local/mysql-5.1.37-osx10.5-x86_64/bin/mysql_config --with-mysql=/usr/local/mysql-5.1.37-osx10.5-x86_64 --disable-dependency-tracking --prefix=/usr --without-mcrypt -mandir=/usr/share/man --infodir=/usr/share/info --with-apxs2=/usr/sbin/apxs --with-config-file-path=/private/etc --sysconfdir=/private/etc --enable-cli --with-curl=/opt/local --enable-ftp --enable-mbstring --enable-mbregex --enable-sockets --with-ldap=/usr --with-ldap-sasl --with-kerberos=/usr --with-mime-magic=/etc/apache2/magic --with-zlib-dir=/usr --with-gd --with-png-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6 --without-jpeg-dir --enable-exif

UPDATE

If you want or need libjpeg or true type support for things like imagettfbbox or imagejpeg. The needed libraries comple simply with a , configure, make, make install.

You can get them from here

http://www.ijg.org/files/jpegsrc.v7.tar.gz http://ftp.cc.uoc.gr/mirrors/nongnu.org/freetype/

Setting the appropriate environment variables also might help , but I’m not sure if this is required.

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET

be sure you get the newest version of freetype as some of the older versions won’t compile the shared libraries in 64 bit.

CFLAGS='-arch x86_64' ./configure --without-iconv --with-apxs2 --enable-pdo --with-zlib=/usr --with-curl --with-mcrypt --with-pdo_mysql=/usr/local/mysql/bin/mysql_config --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql --disable-dependency-tracking --prefix=/usr --without-mcrypt -mandir=/usr/share/man --infodir=/usr/share/info --with-apxs2=/usr/sbin/apxs --with-config-file-path=/private/etc --sysconfdir=/private/etc --enable-cli --with-curl=/opt/local --enable-ftp --enable-mbstring --enable-mbregex --enable-sockets --with-ldap=/usr --with-ldap-sasl --with-kerberos=/usr --with-mime-magic=/etc/apache2/magic --with-zlib-dir=/usr --with-gd --with-png-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6 --with-jpeg-dir=/usr/local --with-freetype-dir=/usr/local --enable-exif

One other thing I’d like to mention: If you use zsh you can do tab completion on php configure options, this has to be one of the awesomest things I’ve seen in a while.