How to Compile suPHP+Apache2+PHP

Posted by Planet Malaysia on May 3, 2006

advertisement

suPHP

Finally I’m manage to make my PHP 5.1.2 compiled with suPHP successful today :)

[tag]suPHP[/tag] is a tool for executing PHP scripts with the permissions of their owners. It consists of an Apache module (mod_suphp) and a setuid root binary (suphp) that is called by the Apache module to change the uid of the process executing the PHP interpreter.

I just would like to share about “How’s To Compile PHP + suPHP + Apache” as below:

Compile Apache
Download Apache 2.0.5x

./configure \
–prefix=/usr/local/apache2 \
–enable-layout=Apache \
–enable-modules=all \
–enable-mods-shared=all \
–enable-proxy \
–enable-suexec \
–enable-so \
–with-mpm=prefork \
–with-suexec-caller=www \
–with-suexec-userdir=www \
–with-suexec-docroot=/home \
–with-suexec-logfile=/dev/null \
–with-suexec-safepath=/usr/local/bin:/usr/bin:/bin:/usr/home:/usr/sbin \
–disable-dav \
–disable-dav-fs

make; make install

Compile PHP
Download PHP 5.1.2
* Remember you must have PHP CGI version to make suPHP work.

./configure \
–with-mysql=/var/lib/mysql \
–with-config-file-path=/etc \
–enable-force-cgi-redirect \
–enable-mbstring \
–with-jpeg-dir=/usr/lib \
–with-png-dir=/usr/lib \
–with-zlib-dir=/usr/lib \
–with-freetype-dir=/usr/lib \
–without-sqlite \
–with-mysql-sock=/tmp

make;make install

  • cp /root/software/php/php-5.1.2/sapi/cli/php /usr/local/bin/php.cli
  • cp /root/software/php/php-5.1.2/sapi/cli/php /usr/local/bin/php
  • cp /root/software/php/php-5.1.2/sapi/cgi/php /usr/local/bin/php.cgi

Compile suPHP
Download suPHP

./configure \
–prefix=/usr/local \
–with-apache-user=www \
–with-logfile=/var/log/suphp.log \
–with-apxs=/usr/local/apache2/bin/apxs \
–with-min-uid=500 \
–with-min-gid=500 \
–with-php=/usr/local/bin/php.cgi

make;make install

  • cp /root/software/php/suphp-0.6.1/doc/suphp.conf-example /usr/local/etc/suphp.conf

vi /usr/local/etc/suphp.conf – and make sure correct:

logfile=/var/log/suphp.log
webserver_user=www
docroot=/
min_uid=500
min_gid=500
x-httpd-php=php:/usr/local/bin/php.cgi

Modify Apache2 – httpd.conf

vi /usr/local/apache2/conf/httpd.conf

LoadModule suphp_module modules/mod_suphp.so

AddHandler x-httpd-php .php
AddType application/x-httpd-php-source .phps

#Example:

ServerAdmin admin@yourdomain.com
DocumentRoot /home/yourdomainusername/www
TransferLog /dev/null
ErrorLog /var/apachelog/yourusername.com-error.log
ServerName yourdomain.com
SuexecUserGroup yourdomainusername yourdomainusername


suPHP_Engine on
suPHP_AddHandler x-httpd-php
suPHP_UserGroup yourdomainusername yourdomainusername
suPHP_ConfigPath /etc/

Testing

vi /home/youdomainusername/www/info.php

< ?
phpinfo();
?>

Save the info.php file

  • chmod yourdomainusername.yourdomainusername info.php
  • Make sure yourdomainusername uid & gid is above 500
  • chmod 755 /home/yourdomainusername

vi /home/youdomainusername/www/write.php

< ?php

$your_data = "write your data into this file.";

// Open the file and erase the contents if any
$fp = fopen("mywritefile.txt", "w");

// Write the data to the file
fwrite($fp, $your_data);

// Close the file
fclose($fp);

echo 'Write to the file done!';

?>

Save the write.php file

  • chmod yourdomainusername.yourdomainusername write.php
  • Restart your apache server

/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start

Open your browser and go to URL:

http://localhost/info.php

and

http://localhost/write.php

Gongratulations! if you can see info.php page and get a new file mywritefile.txt

If you need further help, you may check out suPHP malling list

Possibly Related Posts:


Comments

3 Responses to “How to Compile suPHP+Apache2+PHP”

  1. Azmeen on May 3rd, 2006 7:28 pm

    Any particular reasons why you’d like to execute PHP scripts with the owner’s permissions?

    Seems like a bad idea to me, especially if some exploit is discovered for suPHP.

  2. Planet Malaysia on May 3rd, 2006 9:45 pm

    This can safe my time for recompile new PHP and Apache2.

  3. My.diary.in.th » How to Compile suPHP+Apache2+PHP on October 15th, 2006 1:54 pm

    [...] คัดลอกจาก http://planetmy.com/blog/?p=67  [...]

Leave a Reply




Planet Malaysia

  • Follow us on Twitter


  • web www.planetmy.com