Archivo de la etiqueta: php-fpm

FreeBSD: PHP-FPM y NGINX Página en Blanco | White Page

PHP-FPM Página en Blanco | White Page

He estado montado unos servidores con FreeBSD con NGINX y PHP-FPM y me he encontrado que no funcionaba el PHP con la configuración habitual, tampoco salia nada en los logs, el único síntoma era una página en blanco al acceder a cualquier archivo PHP.

La solución al problema, añadir el PATH_TRASLATED que no esta definido a la configuración de fcgi:

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;

Esto se tiene que añadir o bien al vhost de la web o directamente en fastcgi_params para que tome efecto en todas las páginas, luego reiniciamos nginx y listo ( no hace falta reiniciar php-fpm)

Nginx y PHP con Usuarios, Grupos y configuración individual: /etc/php5/fpm/pool.d

Un ejemplo de lo que puede ir en /etc/php5/fpm/pool.d/sitioweb con nginx y PHP, con esto podemos usar usuarios y grupos, mayor seguridad y rendimiento, también podemos definir la cantidad de procesos de PHP y todas las opciones de php-fpm

[web1]

listen = 127.0.0.1:9020
listen.allowed_clients = 127.0.0.1

user = skamasle
group = skamasle

pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0

chdir = /

php_admin_value[open_basedir] = /aquí lo suyo
php_admin_value[session.save_path] = /aquí alguna ruta para el tmp, normalmente /tpm pero si queremos otra la ponemos
php_admin_value[upload_tmp_dir] = /mas de lo mismo si queremos otro upload dir lo ponemos aqui

NOTA:

Podemos usar sockets, yo prefiero los sockets y siempre los uso, pero la gente usa puerto, en ese caso ponemos un puerto distinto para cada web:

listen = 127.0.0.1:9020
listen = 127.0.0.1:9030
etc

El puerto tiene que coincidir en el vhost y el socket también ( si lo usaramos;

location @php {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9020;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Si usamos socket queda algo así:

[web1]

listen = /var/lib/php5-fpm/web1.sock <- UN socket para cada web listen.owner = skamasle listen.group = skamasle listen.mode = 0660 user = skamasle group = skamasle etc

Y el vhost igual pero con el socket:

location @php {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web1.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Bueno más o menos así, no espero que lo entiendan bien, es solo una base y lo dejo aquí para recordarme