lime icon

Phosphorus and Lime

A Developer's Broadsheet

This blog has been deprecated. Please visit my new blog at klenwell.com/press.
PHP4 and PHP5 on the Same Apache Server
This post has been updated. Please see: http://www.klenwell.com/press/2009/02/php4-php5-one-server/


My goal seemed pretty simple: put PHP4 and PHP5 on my local Apache server so that I can easily test a couple applications that still need to work with PHP4. This is for Ubuntu.

I found a pretty good guide here:
http://www.howtoforge.com/apache2_with_php5_and_php4

The only problem is that php4-cgi is no longer in the Ubuntu repositories.

The solution turned out to be pretty easy in the end. Just add one of the old repositories that still has it to your sources list. But it took me the better part of an evening to hunt down that solution.

So here's my step-by-step guide to installing PHP4 to run along side PHP5 on my Apache server on Ubuntu 7.10:

# add breezy to sources
$ sudo gedit /etc/apt/sources.list

# added the following lines
deb http://old-releases.ubuntu.com/ubuntu/ breezy-updates main restricted
deb http://old-releases.ubuntu.com/ubuntu/ breezy-security main restricted
deb http://old-releases.ubuntu.com/ubuntu/ breezy main restricted
deb http://old-releases.ubuntu.com/ubuntu/ breezy universe
deb http://old-releases.ubuntu.com/ubuntu/ breezy-security universe

$ apt-get update

# back up apache2 config file
$ sudo cp apache2.conf /tmp/apache2.conf

# install php4-cgi
$ sudo apt-get install php4-cgi

# install php4 packages
$ sudo apt-get install php4-curl php4-domxml php4-gd php4-imap php4-ldap php4-mcal php4-mcrypt php4-mhash php4-mysql php4-odbc php4-snmp php4-xslt curl libwww-perl imagemagick

# edit apache2 config
$ /etc/apache2/apache2.conf.

# replace line:
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml

# with:
DirectoryIndex index.html index.htm index.shtml index.cgi index.pl index.php index.php4 index.xhtml

# And add lines:
AddHandler php-script .php4
Action php-script /cgi-bin/php4

# enable mods and restart
$ sudo a2enmod actions
$ /etc/init.d/apache2 restart


If you need to deviate from this, I probably won't be much help. But I hope it saves someone a little precious time.

Labels: , ,

Ubuntu: Command Line Email
For a simpler, updated version of this guide, please see: http://klenwell.com/is/UbuntuCommandLineGmail


problem

I want to send email using the command line on my laptop Ubuntu system. Mainly for cron jobs and automated backups. I want to be able to do so without having to set up a full-fledged MTA like sendmail or exim. And I want to be able to use either my ISP email account or a Gmail account.

Seemed simple enough and it probably is for people who do this type of thing for a living. Took me all night. So hopefully this will save someone else (perhaps me again in the future) hours of unnecessary frustration.

solution

First, look at this diagram from Wikipedia. Without being able to find a simple step-by-step tutorial to guide me, the biggest problem I was having was sorting out what was my MUA, what was my MTA, and what if anything I needed to connect the two. Long story short, they are as follows:

MUA (the client): nail (you can also use mailx or mutt or even evolution)
MTA (the mail server): your isp or gmail
MSA (smtp middle man): msmtp (a simple MTA that gets mail from your client to your real MTA or mailhub)

step-by-step

Install the needed programs
$ sudo apt-get install msmtp
$ sudo apt-get install nail


Install Thawte certificate for Gmail
This is necessary (I think) for Gmail. Probably the most complicated step, though not too bad thanks to instructions here:
$ mkdir -p ~/etc/.certs
$ chmod 0700 ~/etc/.certs
$ cd ~/etc/.certs
$ wget https://www.verisign.com/support/thawte-roots.zip --no-check-certificate
$ unzip thawte-roots.zip
$ cp Thawte\ Server\ Roots/ThawtePremiumServerCA_b64.txt ThawtePremiumServerCA.crt


Configure msmtp
Replace UPPERCASE text with your personal settings
$ gedit ~/.msmtprc

This will open up an msmtp configuration file where you'll want to copy the following lines, with your correct settings, of course:
# config options: http://msmtp.sourceforge.net/doc/msmtp.html#A-user-configuration-file
defaults
logfile /tmp/msmtp.log



# isp account
account isp
auth login
host SMTP.YOURISP.COM
port 25
user YOURNAME@ISP.COM
from YOURNAME@ISP.COM
password *****



# gmail account
account gmail
auth on
host smtp.gmail.com
port 587
user YOURNAME@gmail.com
password *****
from YOURNAME@gmail.com
tls on
tls_trust_file /home/USER/etc/.certs/ThawtePremiumServerCA.crt



# set default account to use (from above)
account default : isp


Change permission on this file or msmtp will complain:
$ chmod 600 ~/.msmtprc


Configure nail
$ gedit ~/.mailrc

The key line below is "set message-sendmail-extra-arguments". It seemed like I should have been able to add this to the set sendmail command. Suffice to say, not well documented.
# set smtp for nail
# ref: http://ubuntuforums.org/showpost.php?p=4531994&postcount=6
# docs: http://msmtp.sourceforge.net/doc/msmtp.html#Configuration-files

# isp account (default)
# $ nail -s "subject line" -a /path/file recipient@email.com < /path/body.txt
set from="YOURNAME@ISP.COM"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a isp"

# gmail account
# $ nail -A gmail -s "subject line" -a /path/file recipient@email.com < /path/body.txt
account gmail {
set from="YOURNAME@gmail.com (YOURNAME)"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a gmail"
}


Send test messages for both accounts

$ echo -e "testing email from the command line" > /tmp/test_email
$ nail -s "isp test" YOURNAME@gmail.com < /tmp/test_email
$ nail -A gmail -s "gmail test" YOURNAME@gmail.com < /tmp/test_email


Check your gmail account and you should have two new messages -- one from that account and one from your ISP account. To check your log:
$ gedit /tmp/msmtp.log


Conclusion

Only took me all Friday night to figure this out. But, hey, better than getting drunk, stoned, and laid. :)

I've added this post to ubuntuforums.org: http://ubuntuforums.org/showthread.php?t=780509

Labels: