Good point.
I built PHP 5.3.6 like this:
./configure \
--with-layout=GNU \
--with-libdir=lib64 \
--enable-fpm \
--with-gd \
--enable-mbstring \
--enable-pcntl \
--enable-soap \
--enable-sockets \
--enable-sqlite-utf8 \
--enable-zip \
--with-zlib \
--with-curl \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-gettext \
--with-mcrypt \
--with-mysql \
--with-mysqli \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-tidy \
--with-pear \
--disable-debug
Nginx 0.8.54 like this (a while ago):
./configure --with-http_ssl_module \
--add-module=./contrib/nginx_upload_module-2.2.0 \
--add-module=./contrib/masterzen-nginx-upload-progress-
module-8b55a34
and here are my config files...
php-fpm.conf:
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
; All relative paths in this configuration file are relative to
PHP's install
; prefix (/usr/local). This prefix can be dynamicaly changed by
using the
; '-p' argument from the command line.
; Include one or more files. If glob(3) exists, it is used to
include a bunch of
; files from a glob(3) pattern. This directive can be used
everywhere in the
; file.
; Relative path can also be used. They will be prefixed by:
; - the global prefix if it's been set (-p arguement)
; - /usr/local otherwise
;include=etc/fpm.d/*.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
; Pid file
; Note: the default prefix is /usr/local/var
; Default Value: none
pid = run/php-fpm.pid
; Error log file
; Note: the default prefix is /usr/local/var
; Default Value: log/php-fpm.log
error_log = log/php-fpm.log
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
log_level = notice
; If this number of child processes exit with SIGSEGV or SIGBUS
within the time
; interval set by emergency_restart_interval then FPM will
restart. A value
; of '0' means 'Off'.
; Default Value: 0
;emergency_restart_threshold = 0
; Interval of time used by emergency_restart_interval to determine
when
; a graceful restart will be initiated. This can be useful to
work around
; accidental corruptions in an accelerator's shared memory.
; Available Units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
;emergency_restart_interval = 0
; Time limit for child processes to wait for a reaction on signals
from master.
; Available units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
;process_control_timeout = 0
; Send FPM to background. Set to 'no' to keep FPM in foreground
for debugging.
; Default Value: yes
;daemonize = yes
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; Multiple pools of child processes may be started with different
listening
; ports and different management options. The name of the pool
will be
; used in logs and stats. There is no limitation on the number of
pools which
; FPM can handle. Your system will tell you anyway :)
; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be
replaced by the
; pool name ('www' here)
[www]
; Per pool prefix
; It only applies on the following directives:
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or NONE) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a
specific address on
; a specific port;
; 'port' - to listen on a TCP socket to all
addresses on a
; specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = 9000
; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = -1
; List of ipv4 addresses of FastCGI clients which are allowed to
connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in
the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket.
Each address
; must be separated by a comma. If this value is left blank,
connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
; Set permissions for unix socket, if one is used. In Linux, read/
write
; permissions must be set in order to allow connections from a web
server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
; mode is set to 0666
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0666
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the
default user's group
; will be used.
user = nobody
group = nobody
; Choose how the process manager will control the number of child
processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically
based on the
; following directives:
; pm.max_children - the maximum number of
children that can
; be alive at the same time.
; pm.start_servers - the number of children
created on startup.
; pm.min_spare_servers - the minimum number of
children in 'idle'
; state (waiting to process).
If the number
; of 'idle' processes is less
than this
; number then some children
will be created.
; pm.max_spare_servers - the maximum number of
children in 'idle'
; state (waiting to process).
If the number
; of 'idle' processes is
greater than this
; number then some children
will be killed.
; Note: This value is mandatory.
pm = dynamic
; The number of child processes to be created when pm is set to
'static' and the
; maximum number of child processes to be created when pm is set
to 'dynamic'.
; This value sets the limit on the number of simultaneous requests
that will be
; served. Equivalent to the ApacheMaxClients directive with
mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the
original PHP
; CGI.
; Note: Used when pm is set to either 'static' or 'dynamic'
; Note: This value is mandatory.
pm.max_children = 50
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers -
min_spare_servers) / 2
pm.start_servers = 20
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 5
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 35
; The number of requests each child process should execute before
respawning.
; This can be useful to work around memory leaks in 3rd party
libraries. For
; endless request processing specify '0'. Equivalent to
PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500
; The URI to view the FPM status page. If this value is not set,
no URI will be
; recognized as a status page. By default, the status page shows
the following
; information:
; accepted conn - the number of request accepted by the
pool;
; pool - the name of the pool;
; process manager - static or dynamic;
; idle processes - the number of idle processes;
; active processes - the number of active processes;
; total processes - the number of idle + active processes.
; max children reached - number of times, the process limit has
been reached,
; when pm tries to start more children
(works only for
; pm 'dynamic')
; The values of 'idle processes', 'active processes' and 'total
processes' are
; updated each second. The value of 'accepted conn' is updated in
real time.
; Example output:
; accepted conn: 12073
; pool: www
; process manager: static
; idle processes: 35
; active processes: 65
; total processes: 100
; max children reached: 1
; By default the status page output is formatted as text/plain.
Passing either
; 'html' or 'json' as a query string will return the corresponding
output
; syntax. Example:
; http://www.foo.bar/status
; http://www.foo.bar/status?json
; http://www.foo.bar/status?html
; Note: The value must start with a leading slash (/). The value
can be
; anything, but it may not be a good idea to use the .php
extension or it
; may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status
; The ping URI to call the monitoring page of FPM. If this value
is not set, no
; URI will be recognized as a ping page. This could be used to
test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load
balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value
can be
; anything, but it may not be a good idea to use the .php
extension or it
; may conflict with a real PHP file.
; Default Value: not set
ping.path = /ping
; This directive may be used to customize the response of a ping
request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
;ping.response = pong
; The timeout for serving a single request after which the worker
process will
; be killed. This option should be used when the
'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0'
means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or
d(ays)
; Default Value: 0
;request_terminate_timeout = 0
; The timeout for serving a single request after which a PHP
backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or
d(ays)
; Default Value: 0
;request_slowlog_timeout = 0
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow
; Set open file descriptor rlimit.
; Default Value: system defined value
;rlimit_files = 1024
; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0
; Chroot to this directory at the start. This value must be
defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix
or one
; of its subdirectories. If the pool prefix is not set, the global
prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used
whenever
; possible. However, all PHP paths will be relative to the
chroot
; (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www
; Redirect worker stdout and stderr into main error log. If not
set, stdout and
; stderr will be redirected to /dev/null according to FastCGI
specs.
; Note: on highloaded environement, this can cause some delay in
the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs
are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
; Additional php.ini defines, specific to this pool of workers.
These settings
; overwrite the values previously defined in the php.ini. The
directives are the
; same as the PHP SAPI:
; php_value/php_flag - you can set classic ini
defines which can
; be overwritten from PHP call
'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be
overwritten by
; PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes
or no.
; Defining 'extension' will load the corresponding shared
extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes'
will not
; overwrite previously defined php.ini values, but will append the
new value
; instead.
; Note: path INI options can be relative and will be expanded with
the prefix
; (pool, global or /usr/local)
; Default Value: nothing is defined by default except the values
in php.ini and
; specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f
www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
nginx.conf:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local]
"$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent"
"$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
client_max_body_size 1000m;
upload_progress uploads 5m;
upstream backend_hello {
server unix:/tmp/fcgi-hello-1.socket;
}
# HTTP server
#
server {
listen 80 default;
root website;
index index.php;
location ~ ^/(status|ping)$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
allow 127.0.0.1;
# allow stats_collector.localdomain;
# allow watchdog.localdomain;
# deny all;
}
location ~ \.php$ {
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_index index.php;
if (-f $request_filename) {
fastcgi_pass 127.0.0.1:9000;
}
}
location /dreamworks {
rewrite ^(.*) https://$host$1 permanent;
}
}
# HTTPS server
#
server {
listen 443;
server_name files.digitalfish.com;
ssl on;
ssl_certificate /usr/local/nginx/conf/df.crt;
ssl_certificate_key /usr/local/nginx/conf/df.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:
+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location /fcgi {
root html;
fastcgi_pass backend_hello;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param UPLOAD_FILE_NAME "$upload_file_name";
fastcgi_param UPLOAD_TMP_PATH "$upload_tmp_path";
}
location @frontcontroller {
rewrite ^ /fcgi/uploaded.html last;
}
location /progress {
report_uploads uploads;
}
location /upload {
#upload_pass /dreamworks/incoming/uploaded.html;
upload_pass @frontcontroller;
upload_store /usr/local/nginx/clients/dreamworks/
incoming;
upload_store_access user:r group:r all:r;
upload_set_form_field $upload_field_name.name
"$upload_file_name";
upload_set_form_field $upload_field_name.path
"$upload_tmp_path";
upload_set_form_field "XXXXX" "YYYYY";
upload_aggregate_form_field "$upload_field_name.sha1"
"$upload_file_sha1";
upload_aggregate_form_field "$upload_field_name.size"
"$upload_file_size";
upload_cleanup 400 404 499 500-505;
track_uploads uploads 5s;
}
location /dreamworks {
root clients;
#index index.html index.htm;
autoindex on;
auth_basic "Restricted";
auth_basic_user_file htpasswd/dreamworks;
}
location /client2 {
root clients;
index index.html index.htm;
auth_basic "Restricted";
auth_basic_user_file htpasswd/client2;
}
location / {
root html;
index index.html index.htm;
}
}
}
fastcgi.conf:
fastcgi_param SCRIPT_FILENAME $document_root
$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-
redirect
#fastcgi_param REDIRECT_STATUS 200;
Steve
On 5/10/2011 1:16 PM, rainer@ultra-secure.de wrote:
>> Greetings,
>>
>> Using a couple of tutorials, I believe I've got php-fpm correctly
>> wired into my existing nginx environment. Whenever I access a .php
>> page, I get a blank page in my browser. I can't figure out why.
> That's not uncommon.
>
> However, with no details (which is astounding, given the size of your
> post...) of your configuration provided, knowing what exactly is wrong
> with your setup would be clairvoyance....
> ;-)
>
>
On May 10, 1:16 pm, rai...@ultra-secure.de wrote:
> > Greetings,
>
> > Using a couple of tutorials, I believe I've got php-fpm correctly
> > wired into my existing nginx environment. Whenever I access a .php
> > page, I get a blank page in my browser. I can't figure out why.
>
> That's not uncommon.
>
> However, with no details (which is astounding, given the size of your
> post...) of your configuration provided, knowing what exactly is wrong
> with your setup would be clairvoyance....
> ;-)