How To Set Up Apache2 With mod_fcgid And PHP5 On Debian Lenny - Page 2

Want to support HowtoForge? Become a subscriber!
 
Submitted by falko (Contact Author) (Forums) on Wed, 2009-09-09 16:22. ::

4 Testing

Now we create a small PHP test file, for example in the www.example1.com web site...

vi /var/www/web1/web/info.php

<?php
phpinfo();
?>

... and call that file in a browser (http://www.example1.com/info.php). If all goes well, the output should look similar to this, and you should see CGI/FastCGI in the Server API line:

 

5 Custom php.ini for Each Web Site

Because each web site has its own php-fcgi-starter wrapper script, it is possible to define different php.ini files for different web sites. To demonstrate this, I will copy the default php.ini (/etc/php5/cgi/php.ini) to the /var/www/web2/ directory and make www.example2.com use the php.ini from the /var/www/web2/ directory:

cp /etc/php5/cgi/php.ini /var/www/web2/
chown web2:web2 /var/www/web2/php.ini

(You can now modify /var/www/web2/php.ini to your likings.)

Then we open /var/www/php-fcgi-scripts/web2/php-fcgi-starter...

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

... and put /var/www/web2/ in the PHPRC line:

#!/bin/sh
PHPRC=/var/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php

Reload Apache afterwards:

/etc/init.d/apache2 reload

Create a new phpinfo(); file for www.example2.com...

vi /var/www/web2/web/info.php

<?php
phpinfo();
?>

... and call it in a browser (http://www.example2.com/info.php). The Loaded Configuration File line should now show /var/www/web2/php.ini:

 

6 Changing Single PHP Configuration Settings

Instead of passing a whole new php.ini file to your web site, you can as well change single PHP configuration settings in the php-fcgi-starter wrapper script (or use a combination of both) by adding the -d switch to the PHP executable. For example, if I want to disable magic_quotes_gpc for the web site www.example2.com, I'd do it as follows:

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -d magic_quotes_gpc=off

Reload Apache afterwards:

/etc/init.d/apache2 reload

Then call the info.php script again in a browser (http://www.example2.com/info.php) and search for the magic_quotes_gpc line - it should show Off now:

 

7 Links


Please do not use the comment function to ask for help! If you need help, please use our forum.
Comments will be published after administrator approval.
Submitted by mami (not registered) on Thu, 2011-03-03 22:13.

Hi

Very good and prof tutorial. I have one question how i can enable php-cgi to others users system $home/public_html/ ? Can you added this example ?

Submitted by Nikolay (not registered) on Sun, 2010-09-12 15:11.

Hello,

very good tutorial. The only problem I have is that with a simple php script

<?php
$a = `cat /etc/passwd`;
echo $a;
?>

I can read anywhere on the hard disk where I have permission to read.Yes, I cannot read the other vhosts' files, but there are more interesting places I can check for clear text password and so on.

Adding open_basedir = /var/www/ does not stop the code above from being executed successfully.

Thanks,
Nikolay

Submitted by traxxus (not registered) on Thu, 2010-08-19 21:18.

VERY good tutorial. The only one which works correctly after.


THUMBS UP!!