Thanks for this. I modified the instructions below (just slightly)
and it worked like a charm. In case anybody else is interested in
making this work, and they want explicit details, I wrote up the
entire procedure on my blog.
http://mjijackson.com/2008/02/04/how-to-install-php-53-alongside-52-
on-lighttpd-using-macports/
Michael
On Dec 13, 2007, at 4:12 PM, Ryan Schmidt wrote:
On Dec 13, 2007, at 16:08, Michael J. I. Jackson wrote:
Can anybody tell me the best way to install PHP 5.3 (currently in
development) alongside a MacPorts install of PHP 5.2 on Apache?
There is a php5-devel port which is currently at an earlier version
(5.2.5RC2) than the php5 port (5.2.5) but it could possibly be
updated to 5.3. I'm not sure if you can install php5-devel
simultaneously with the php5 port, but if not, we could look into
making it possible... But Jyrki may want to keep it for PHP 5.2.x
release candidates. In which case, you may have to keep manually
compiling as below.
I'm having two problems in particular.
1) I tried downloading and installing the PHP 5.3 snapshot to /usr/
local using the following ./configure:
./configure --prefix=/usr/local --enable-calendar --with-iconv=/
opt/local --enable-exif --enable-ftp --enable-wddx --with-zlib=/
opt/local --with-libxml-dir=/opt/local --with-gettext=/opt/local --
with-xml --with-expat-dir=/opt/local --with-xmlrpc --enable-soap --
enable-filepro --enable-bcmath --enable-trans-sid --enable-
mbstring --enable-dbx --enable-dba --with-openssl=/opt/local --
with-mhash=/opt/local --with-mcrypt=/opt/local --with-xsl=/opt/
local --with-curl=/opt/local --with-pcre-regex=/opt/local --with-
gd --with-jpeg-dir=/opt/local --with-png-dir=/opt/local --enable-
gd-native-ttf --without-pear --with-freetype-dir=/opt/local --with-
ldap=/usr --with-kerberos=/usr --with-iodbc=/usr --with-apxs2=/opt/
local/apache2/bin/apxs --with-mysql=/opt/local/var/macports/build/
_opt_local_var_macports_sources_rsync.macports.org_release_ports_www_
php5/work/mysql5 --with-pdo-mysql=/opt/local/bin/mysql_config5 --
with-mysql-sock=/opt/local/var/run/mysql5/mysqld.sock --with-
mysqli=/opt/local/bin/mysql_config5 --with-sqlite --with-pdo-
sqlite=/opt/local --enable-sqlite-utf8
This is basically the same ./configure my MacPorts install uses,
but with a different prefix. However, I get the following error
during configure:
checking for specified location of the MySQL UNIX socket... /opt/
local/var/run/mysql5/mysqld.sock
checking for MySQL UNIX socket location... /opt/local/var/run/
mysql5/mysqld.sock
configure: error: Cannot find MySQL header files under /opt/local/
var/macports/build/
_opt_local_var_macports_sources_rsync.macports.org_release_ports_www_
php5/work/mysql5.
Note that the MySQL client library is not bundled anymore!
So when I take out --with-mysql, it compiles and installs fine,
but I don't have the MySQL library.
Read the post-extract section of the mysql5 variant of the php5
portfile to see how it copes with this. You just have to make a
couple symlinks to make the layout match what php expects. You could:
cd /tmp
mkdir php5mysql5
ln -s /opt/local/lib/mysql5 php5mysql5/lib
ln -s /opt/local/include/mysql5 php5mysql5/include
Then use --with-mysql=/tmp/php5mysql5 in your php configure line
instead. Then delete /tmp/php5mysql5 when you're done.
2) Using the above method, the new Apache module overwrites the
old module (/opt/local/apache2/modules/libphp5.so). This is just
fine for running just 5.3, but I don't want to use it all the
time! I only want 5.3 as a development version. Any help? Is there
any way that I can install 5.3 so that I can just put a different
extension on files that I'd like to use it for? .php53 maybe?
Apache cannot support multiple php modules simultaneously. But you
may want to look into using the lighttpd web server with php
accessed through fastcgi instead. I have in the past successfully
had php4 and php5 running simultaneously under lighttpd. Assuming
the php5 and php5-devel ports can be installed simultaneously
(which again I'm not sure of) -- or if you build php 5.3 manually
-- you should be able to get php 5.2 and 5.3 side by side as well.
Here's an example from my lighttpd configuration file, which says
to use php5 for all .php files, except if the URL contains "/php4/"
in which case use php4 for all .php files. You could easily have it
react to a different filename extension instead if you prefer. As
you see lighttpd's configuration is quite different from Apache's
and allows for some very interesting things, like this.
fastcgi.server = (".php" =>
("localhost" =>
(
"socket" => "/tmp/lighttpd-" + var.datetime + "-php5-"
+ var.PID,
"bin-path" => "/opt/local/bin/php-cgi",
"broken-scriptfilename" => "enable",
"allow-x-send-file" => "enable",
"min-procs" => 2,
"max-procs" => 2,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "500"
)
)
)
)
$HTTP["url"] =~ "/php4/" {
fastcgi.server = (".php" =>
("localhost" =>
(
"socket" => "/tmp/lighttpd-" + var.datetime +
"-php4-" + var.PID,
"bin-path" => "/opt/local/bin/php4-cgi",
"broken-scriptfilename" => "enable",
"allow-x-send-file" => "enable",
"min-procs" => 2,
"max-procs" => 2,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "500"
)
)
)
)
}
_______________________________________________
macports-users mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo/macports-users