Apache: Su-exec voor php
Met dank aan [mail=matthijs@comkraq.net]mathijs[/mail] kunnen we deze howto su-exec php under apache beschikbaar stellen.
Zoals de titel waarschijnlijk al zegt gaan we er voor zorgen dat php ook onder de gebruiker draait die je ingesteld hebt bij je virtualhost.
1. Port Upgrade
Je moet eerst zorgen dat je ports uptodate zijn.
Volg de volgende aanwijzingen om je ports te updaten.
Shell:
# cd /usr/ports # cp /usr/share/examples/cvsup/ports-supfile ports-supfile # vi ports-supfile |
pas het volgende aan:
File:
*default host=CHANGE_THIS.FreeBSD.org |
naar:
File:
*default host=cvsup3.nl.freebsd.org |
typ nu: escape :wq om uit vi te gaan
en daarna:
Shell:
# cvsup -g -L 2 ports-supfile om je ports te updaten |
2. Apache + suexec via port
Oke eerst gaan we apache installeren:
hint(s): -pas nadat je de Makefile gedownload hebt de mingid en minuid aan
-In de Makefile staat dat php alleen vanuit /home gestart mag worden. Pas dit naar de directory aan waar jij je webpagina’s/gebruikers hebt.
Shell:
# cd /usr/ports/www/apache13/ # wget http://www.matthijs.vuurwerk.nl/howto/Makefile # make # cd work/apache_1.3.26 # wget http://www.localhost.nl/patches/apache-php-suexec-patch # patch -p1 < apache-php-suexec-patch # vi src/support/suexec.c |
Zoek in de file naar php
Vervang nu het volgende:
php3.cgi vervangen door php3
php4.cgi vervangen door php
#define HAVECGIDIR vervangen door /* #define HAVECGIDIR */
Shell:
# make # cd ../../ # make install |
en je zou nu een apache + suexec moeten hebben
Shell:
cd /usr/ports/lang/php4 make install clean |
Shell:
cd /usr/ports/lang/php3 make install clean |
de opties bij php zijn naar eigen keus
3. httpd.conf aanpassen.
Ga naar /usr/local/etc/apache/httpd.conf
Pas bij de volgende secties in je httpd.conf het volgende aan.
File:
| # Dynamic Shared Object (DSO) Support |
zet bij het volgende een # neer comment het dus.
File:
| #LoadModule mime_magic_module libexec/apache/mod_mime_magic.so |
zet bij het volgende ook een # neer comment het dus.
File:
| #AddModule mod_mime_magic.c |
Zoek nu naar het stukje:
File:
| # To use CGI scripts: # #AddHandler cgi-script .cgi |
En zet er dit bij:
File:
| # To use CGI scripts: # AddHandler cgi-script .cgi AddHandler cgi-script .pl AddHandler cgi-script .php AddHandler cgi-script .php3 AddHandler cgi-script .php4 AddHandler cgi-script .phtml |
Ga vervolgens naar sectie VirtualHost en zet het stuk wat bij Vhost voorbeeld staat erin.
4. Vhost voorbeeld
File:
ServerAdmin jou@email.adress DocumentRoot /home/users/matthijs/www # zet hier je eigen path neer naar je html etc files. ServerName www.bsdfreaks.nl # je domein ServerAlias bsdfreaks.nl # je domein User “#1001″ # userid van $user waar de html files etc staan. Group “#1000″ # groepid ErrorLog /home/logs/bsdfreaks-error.log # path naar de errorlog TransferLog /home/logs/bsdfreaks-access_log #path naar de accesslog |
Als je vragen en of opmerkingen hebt. Kom dan op IRC of mail [mail=matthijs@comkraq.net]mathijs[/mail]!

August 29th, 2002
En een vhost voorbeeld confje?
August 30th, 2002
Alsjeblieft
August 30th, 2002
En hoe zit het dan met de user directory’s? Persoonlijk heb ik namelijk de volgende regel in mijn chost staan:
AliasMatch ^/users/([^/]+)(/(.*))? /home/domein.nl/users/$1/web/$3
Dit zorgt erdus voor dat wanneer ik naar domein.nl/users/blaat ga ik de website van die user krijg te zien. Nu is het alleen zo, dat suexec de group en user id gebruiken die hiervoor zijn gedefineerd ipv de persoonlijke userid + groupid. Is hier ook een oplossing voor zonder voor elke user ook een apart record in de httpd.conf op te nemen.
September 18th, 2002
Niemand??
May 27th, 2003
Nadat ik dit gevolgd heb krijg ik de volgende 500 errors op alle php bestanden : [Tue May 27 16:02:46 2003] [error] [client 193.x.x.x] Premature end of script headers: /usr/local/www/data/iets.php
Heeft iemand hier nog tips voor om php toch goed als cgi aan de gang te krijgen? Als module werkt ie perfect.