TechSpider
A searchable, categorised online resourse for finding technical information and solutions to problems
Welcome! You are viewing the web category.
Below are the Apache and mod_fcgid: Problem serving binary content with Apache 2.2.13 - PHP 5.2.9 related pages
Custom Search
You can search the database for more Apache articles using the box below:
Custom Search

Apache Articles:



I use Plesk 9.2.1 (on OpenSUSE 10.3) to define my domains/virtual hosts. For
PHP I can choose between 'Apache Module', 'FastCGI-Application' and
'CGI-Application'. I will skip the settings for Apache Module here.
Depending on what you select, Plesk does adjust the corresponding
use support for perl and python. The httpd.include sits in
/srv/www/vhosts/domain.tld/conf and is included from
/etc/apache2/conf.d/zz010_psa_httpd.conf (which gets included from
/etc/apache2/httpd.conf).


General configuration from /etc/apache2/sysconfig.d/loadmodule.conf (i left
out non-php-relevant entries):
LoadModule cgi_module
/usr/lib64/apache2-prefork/mod_cgi.so
LoadModule php5_module /usr/lib64/apache2/mod_php5.so
LoadModule fcgid_module /usr/lib64/apache2/mod_fcgid.so
LoadModule suexec_module
/usr/lib64/apache2-prefork/mod_suexec.so

Both CGI and FastCGI use
:/usr/bin/ # php-cgi5 -v
PHP 5.2.9 with Suhosin-Patch 0.9.7 (cgi-fcgi) (built: Mar 12 2009 16:17:38)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

In my php.ini i have

; cgi.force_redirect is necessary to provide security running PHP as a CGI
under
; most web servers. Left undefined, PHP turns this on by default. You can
; turn it off here AT YOUR OWN RISK
; **You CAN safely turn this off for IIS, in fact, you MUST.**
; http://php.net/cgi.force-redirect
;cgi.force_redirect = 1

so it defaults to 1 which is why i set the same in mod_fcgid.conf via
'PHP_Fix_Pathinfo_Enable 1'.



a) Settings for using CGI

/etc/apache2/conf.d/php_cgi.conf
scriptAlias /phppath/ "/usr/bin/"
Action php-script /phppath/php-cgi5


/srv/www/vhosts/domain.tld/conf/httpd.include
:80>
....

SetHandler perl-script
PerlHandler ModPerl::Registry
Options ExecCGI
allow from all
PerlSendHeader On

SetHandler python-program
PythonHandler mod_python.cgihandler

SetHandler fcgid-script
Options +FollowSymLinks +ExecCGI

AddHandler php-script .php
Options +ExecCGI
allow from all

Options -Includes -ExecCGI

Include /srv/www/vhosts/domain.tld/conf/vhost.conf



b) Settings for using FastCGI which is mod_fcgid is selected form Plesk:

:80>
...

SetHandler perl-script
PerlHandler ModPerl::Registry
Options ExecCGI
allow from all
PerlSendHeader On

SetHandler python-program
PythonHandler mod_python.cgihandler

SetHandler fcgid-script
Options +FollowSymLinks +ExecCGI

SetHandler fcgid-script
FCGIWrapper /usr/bin/php-cgi5 .php
Options +ExecCGI
allow from all

Options -Includes -ExecCGI

Include /srv/www/vhosts/domain.tld/conf/vhost.conf


/etc/apache2/conf.d/mod_fcgid.conf
################################################################################
##
## Sample config for apache2_mod-fcgid
##
## All lines, that are commented out, reflect the default values.
##


##
## An idle fastcgi application will be terminated after IdleTimeout seconds.
##
#IdleTimeout 300

##
## The scan interval for idle fastcgi applications in seconds.
##
#IdleScanInterval 120

##
## a fastcgi application will be terminated if handing a single request
longer
## than busy timeout. Value in seconds.
##
#BusyTimeout 300

##
## The scan interval for busy timeout fastcgi applications. Value in
seconds.
##
#BusyScanInterval 120

##
## The scan interval for exit pending fastcgi applications. fastcgi
applications
## will be terminated within this scanning. Value in seconds.
##
#ErrorScanInterval 3

##
## The scan interval for zombie process. Value in seconds.
##
#ZombieScanInterval 3

##
##
## [HOWTO] PHP_AUTH_USER/_PW fuerr PHP-CGI
##
##
PassHeader Authorization
PHP_Fix_Pathinfo_Enable 1
##
##
## A fastcgi application will be terminated if lifetime expired, even no
error
## is detected. Value in seconds.
##
#ProcessLifeTime 3600

##
## The directory to put the UNIX domain socket. (UNIX only)
##
SocketPath /var/lib/apache2/fcgid/

##
## The share memory file path.
##
SharememPath /var/lib/apache2/fcgid/shm

##
## The spawn-speed control score up water limit. Score increases while a
process
## is spawned or terminated, and decreases as time progresses; while the
score is
## higher than SpawnScoreUpLimit, the spawning will be held for a while. The
## higher this number is, the higher speed of the spawning can be.
##
#SpawnScoreUpLimit n (10)

##
## The weight of spawning. This weight will be plused to the spawn-control
## score on every spawn. The higher this number is, the lower speed of
spawning
## can be.
##
#SpawnScore n (1)

##
## The weight of termination. This weight will be plused to the score while
## fastcgi process terminates. The higher this number is, the lower speed of
## spawning can be.
##
#TerminationScore n (2)

##
## The max count of total fastcgi process count.
##
#MaxProcessCount n (1000)

##
## The maximum number of fastcgi application instances allowed to run for
any
## one fastcgi application.
##
#DefaultMaxClassProcessCount n (100)

##
## The default environment variables before a fastcgi application is
spawned.
## You can set this configuration more than once.
##
#DefaultInitEnv env_name env_value

##
## The connect timeout to a fastcgi application. Value in seconds.
##
## Default value: 2
##
IPCConnectTimeout 10

##
## The communication timeout to a fastcgi application. Please increase this
## value if your CGI have a slow initialization or slow respond. Value in
## seconds.
##
## Default value: 5
##
IPCCommTimeout 40

##
## CGI output cache buffer size. Value in kilobytes.
##
#OutputBufferSize 64

##
## Associate .fcgi files with mod_fcgid
##
#AddHandler fcgid-script .fcgi

##
## PHP via FastCGI
##
## uncomment the following line if you want to handle php via mod_fcgid
##
#
# AddHandler fcgid-script .php
# FCGIWrapper /srv/www/cgi-bin/php5 .php
# Options +ExecCGI
#
##

# End of

##
################################################################################


So depending on what i set in Plesk the httpd.include file gets changed and
php files get parsed either with module mod_cgi.so or mod_fcgid.so (which is
a symlink to the 2.3.1 version i compiled) and both times with the same
binary /usr/bin/php-cgi5.

At least that is my understanding.


There is another difference looking at phpinfo():

Using mod_fcgid the only Environment variable i see is PATH. Using mod_cgi
there are a whole lot more Envrionment variables. To my understanding
variables shown under 'Environment' are Apache ENV variables.


phpinfo() from CGI via http://www.domain.tld/admin/phpinfo.php:

Environment
Variable Value
PATH /usr/local/bin:/usr/bin:/bin
REDIRECT_STATUS 200
Gecko/20090824 Firefox/3.5.3 GTB5 (.NET CLR 3.5.30729)
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
SERVER_SOFTWARE Apache/2.2.13 (Linux/SUSE)
SERVER_NAME domain.tld
SERVER_ADDR
SERVER_PORT 80
REMOTE_ADDR
DOCUMENT_ROOT /srv/www/vhosts/domain.tld/httpdocs
SERVER_ADMIN ***
SCRIPT_FILENAME /srv/www/vhosts/domain.tld/httpdocs/admin/phpinfo.php
REMOTE_PORT 58740
REDIRECT_URL /admin/phpinfo.php
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING no value
REQUEST_URI /admin/phpinfo.php
SCRIPT_NAME /admin/phpinfo.php
ORIG_SCRIPT_FILENAME /usr/bin/php-cgi5
ORIG_PATH_INFO /admin/phpinfo.php
ORIG_PATH_TRANSLATED
/srv/www/vhosts/domain.tld/httpdocs/admin/phpinfo.php
ORIG_SCRIPT_NAME /phppath/php-cgi5


PHP Variables
Variable Value

_SERVER["PATH"] /usr/local/bin:/usr/bin:/bin
_SERVER["REDIRECT_STATUS"] 200
_SERVER["HTTP_HOST"] www.domain.tld
_SERVER["HTTP_USER_AGENT"] Mozilla/5.0 (Windows; U; Windows NT 5.1; de;
rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5 (.NET CLR 3.5.30729)
_SERVER["HTTP_ACCEPT"]
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
_SERVER["HTTP_ACCEPT_LANGUAGE"] de
_SERVER["HTTP_ACCEPT_ENCODING"] gzip
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
_SERVER["HTTP_KEEP_ALIVE"] 300
_SERVER["HTTP_CONNECTION"] keep-alive
_SERVER["SERVER_SOFTWARE"] Apache/2.2.13 (Linux/SUSE)
_SERVER["SERVER_NAME"] domain.tld
_SERVER["SERVER_ADDR"]
_SERVER["SERVER_PORT"] 80
_SERVER["REMOTE_ADDR"]
_SERVER["DOCUMENT_ROOT"] /srv/www/vhosts/domain.tld/httpdocs
_SERVER["SERVER_ADMIN"] ***
_SERVER["SCRIPT_FILENAME"]
/srv/www/vhosts/domain.tld/httpdocs/admin/phpinfo.php
_SERVER["REMOTE_PORT"] 58740
_SERVER["REDIRECT_URL"] /admin/phpinfo.php
_SERVER["GATEWAY_INTERFACE"] CGI/1.1
_SERVER["SERVER_PROTOCOL"] HTTP/1.1
_SERVER["REQUEST_METHOD"] GET
_SERVER["QUERY_STRING"] no value
_SERVER["REQUEST_URI"] /admin/phpinfo.php
_SERVER["SCRIPT_NAME"] /admin/phpinfo.php
_SERVER["ORIG_SCRIPT_FILENAME"] /usr/bin/php-cgi5
_SERVER["ORIG_PATH_INFO"] /admin/phpinfo.php
_SERVER["ORIG_PATH_TRANSLATED"]
/srv/www/vhosts/domain.tld/httpdocs/admin/phpinfo.php
_SERVER["ORIG_SCRIPT_NAME"] /phppath/php-cgi5
_SERVER["PHP_SELF"] /admin/phpinfo.php
_SERVER["REQUEST_TIME"] 1253555191
_SERVER["argv"] Array
(
)


_SERVER["argc"] 0
_ENV["PATH"] /usr/local/bin:/usr/bin:/bin
_ENV["REDIRECT_STATUS"] 200
_ENV["HTTP_HOST"] www.domain.tld
_ENV["HTTP_USER_AGENT"] Mozilla/5.0 (Windows; U; Windows NT 5.1; de;
rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5 (.NET CLR 3.5.30729)
_ENV["HTTP_ACCEPT"]
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
_ENV["HTTP_ACCEPT_LANGUAGE"] de
_ENV["HTTP_ACCEPT_ENCODING"] gzip
_ENV["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
_ENV["HTTP_KEEP_ALIVE"] 300
_ENV["HTTP_CONNECTION"] keep-alive
_ENV["SERVER_SOFTWARE"] Apache/2.2.13 (Linux/SUSE)
_ENV["SERVER_NAME"] domain.tld
_ENV["SERVER_ADDR"]
_ENV["SERVER_PORT"]80
_ENV["REMOTE_ADDR"]
_ENV["DOCUMENT_ROOT"] /srv/www/vhosts/domain.tld/httpdocs
_ENV["SERVER_ADMIN"] ***
_ENV["SCRIPT_FILENAME"]
/srv/www/vhosts/domain.tld/httpdocs/admin/phpinfo.php
_ENV["REMOTE_PORT"] 58740
_ENV["REDIRECT_URL"] /admin/phpinfo.php
_ENV["GATEWAY_INTERFACE"] CGI/1.1
_ENV["SERVER_PROTOCOL"] HTTP/1.1
_ENV["REQUEST_METHOD"] GET
_ENV["QUERY_STRING"] no value
_ENV["REQUEST_URI"] /admin/phpinfo.php
_ENV["SCRIPT_NAME"] /admin/phpinfo.php
_ENV["ORIG_SCRIPT_FILENAME"] /usr/bin/php-cgi5
_ENV["ORIG_PATH_INFO"] /admin/phpinfo.php
_ENV["ORIG_PATH_TRANSLATED"]
/srv/www/vhosts/domain.tld/httpdocs/admin/phpinfo.php
_ENV["ORIG_SCRIPT_NAME"] /phppath/php-cgi5




phpinfo() from mod_fcgid - via http://domain.tld/phpinfo.php

Environment
Variable Value
PATH /usr/local/bin:/usr/bin:/bin

PHP Variables
Variable Value
_SERVER["PATH"] /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
_SERVER["FCGI_ROLE"] RESPONDER
_SERVER["HTTP_HOST"] domain.tld
_SERVER["HTTP_USER_AGENT"] Mozilla/5.0 (Windows; U; Windows NT 5.1; de;
rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5 (.NET CLR 3.5.30729)
_SERVER["HTTP_ACCEPT"]
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
_SERVER["HTTP_ACCEPT_LANGUAGE"] de
_SERVER["HTTP_ACCEPT_ENCODING"] gzip
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
_SERVER["HTTP_CONNECTION"] close
_SERVER["SERVER_SIGNATURE"] Apache/2.2.13 (Linux/SUSE) Server at
domain.tld Port 80
_SERVER["SERVER_SOFTWARE"] Apache/2.2.13 (Linux/SUSE)
_SERVER["SERVER_NAME"] domain.tld
_SERVER["SERVER_ADDR"]
_SERVER["SERVER_PORT"] 80
_SERVER["REMOTE_ADDR"]
_SERVER["DOCUMENT_ROOT"] /srv/www/vhosts/domain.tld/httpdocs
_SERVER["SERVER_ADMIN"] ***
_SERVER["SCRIPT_FILENAME"]
/srv/www/vhosts/domain.tld/httpdocs/phpinfo.php
_SERVER["REMOTE_PORT"] 58860
_SERVER["GATEWAY_INTERFACE"] CGI/1.1
_SERVER["SERVER_PROTOCOL"] HTTP/1.1
_SERVER["REQUEST_METHOD"] GET
_SERVER["QUERY_STRING"] no value
_SERVER["REQUEST_URI"] /phpinfo.php
_SERVER["SCRIPT_NAME"] /phpinfo.php
_SERVER["PHP_SELF"] /phpinfo.php
_SERVER["REQUEST_TIME"] 1253554382
_SERVER["argv"] Array
(
)


_SERVER["argc"] 0
_ENV["PATH"] /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
_ENV["FCGI_ROLE"] RESPONDER
_ENV["HTTP_HOST"] domain.tld
_ENV["HTTP_USER_AGENT"] Mozilla/5.0 (Windows; U; Windows NT 5.1; de;
rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5 (.NET CLR 3.5.30729)
_ENV["HTTP_ACCEPT"]
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
_ENV["HTTP_ACCEPT_LANGUAGE"] de
_ENV["HTTP_ACCEPT_ENCODING"] gzip
_ENV["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
_ENV["HTTP_CONNECTION"] close
_ENV["SERVER_SIGNATURE"] Apache/2.2.13 (Linux/SUSE) Server at
domain.tld Port 80
_ENV["SERVER_SOFTWARE"] Apache/2.2.13 (Linux/SUSE)
_ENV["SERVER_NAME"] domain.tld
_ENV["SERVER_ADDR"]
_ENV["SERVER_PORT"] 80
_ENV["REMOTE_ADDR"]
_ENV["DOCUMENT_ROOT"] /srv/www/vhosts/domain.tld/httpdocs
_ENV["SERVER_ADMIN"]***
_ENV["SCRIPT_FILENAME"] /srv/www/vhosts/domain.tld/httpdocs/phpinfo.php
_ENV["REMOTE_PORT"] 58860
_ENV["GATEWAY_INTERFACE"] CGI/1.1
_ENV["SERVER_PROTOCOL"] HTTP/1.1
_ENV["REQUEST_METHOD"] GET
_ENV["QUERY_STRING"] no value
_ENV["REQUEST_URI"] /phpinfo.php
_ENV["SCRIPT_NAME"] /phpinfo.php


Both use the same php.ini from /etc/php5/fastcgi/php.ini.

At least these variables are missing from mod_fcgid's phpinfo():
_SERVER["REDIRECT_STATUS"]
_SERVER["ORIG_SCRIPT_FILENAME"]
_SERVER["ORIG_PATH_INFO"]
_SERVER["ORIG_PATH_TRANSLATED"]
_SERVER["ORIG_SCRIPT_NAME"]

and of course the same _ENV variables as there is only _ENV["PATH"] set
anyway with mod_fcgid.



Concernig the shebang line in modify.php: From what i wrote, you can see,
that i do not put anything in modify.php. I use the script as written in my
first post. It will be parsed depending on the httpd.include file from above
(which is built from Plesk each time you change the configuraition there
from 'FastCGI-Application' to 'CGI-Application' using the same .htaccess.
Via the AddHandler and Action directive the image with watermark is shown
when using cfg-fcgi and PHP tries to parse the image when using mod_fcgid.

I hope this clearifies the situation a lot more instead of causing even more
confusion.

I was happy to give you even more information if you told me what you need.
I would really like to get this solved (and apologies concerning the
formatting of these variables).

TIA,
Marcus






Article list Name Date
Click Here Marcus Merz 2009-09-19 07:48:56
Click Here Jeff Trawick 2009-09-20 01:42:58
Click Here Marcus Merz 2009-09-20 16:30:02
Click Here Jeff Trawick 2009-09-21 15:27:13
Currently Viewing : This ArticleMarcus Merz2009-09-21 18:24:34
Click Here Marcus Merz 2009-09-21 18:40:34
Click Here Jeff Trawick 2009-09-21 21:55:59
Click Here Marcus Merz 2009-09-22 05:21:49
Click Here Marcus Merz 2009-09-22 18:07:12
Click Here Marcus Merz 2009-09-23 18:33:17
Click Here Marcus Merz 2009-10-11 10:16:30
Click Here Jeff Trawick 2009-10-12 20:14:40
Click Here Jeff Trawick 2009-10-12 20:43:56
Click Here Marcus Merz 2010-02-23 21:47:58
Click Here Jeff Trawick 2010-02-23 23:57:30


Copyright Techspider V0.81   |   Techspider Sitemap