Apache: Su-exec voor php

August 29th, 2002 by Rob


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

# pas dit aan naar dezelfde directory aan DocumentRoot.
Options Indexes ExecCGI FollowSymLinks MultiViews
AllowOverride Options AuthConfig FileInfo Indexes Limit
Order allow‚deny
Allow from all


Als je vragen en of opmerkingen hebt. Kom dan op IRC of mail [mail=matthijs@comkraq.net]mathijs[/mail]!

Leave a Reply

5 Responses to “Apache: Su-exec voor php”

  1. Comment by Anonymous

    En een vhost voorbeeld confje?

  2. Comment by Anonymous

    Alsjeblieft :)

  3. Comment by Anonymous

    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.

  4. Comment by Anonymous

    Niemand??

  5. Comment by Anonymous

    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.

SEO Powered by Platinum SEO from Techblissonline