nginx php fpm et safe_mode en fastcgi

Le jeu. 21 avril 2011 par Kasey

Je travaille depuis quelque temps avec nginx en local dans des VMs pour faire des tests et j'ai récemment eu besoin de faire passer des paramètres a php5 via le système de fastcgi. On peut facilement imaginer que ceci est pratique pour faire des tunnings précis pour certains VHosts spécifiques.

Les paramètres se passent via la directive :

fastcgi_param DIRECTIVE valeur ;

Exemple ci-dessous un fichier de vhost nginx classiques avec les directives fastcgi basiques.

location ~ .php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME /path/vers/root/directory$fastcgi_script_name;
  include fastcgi_params;
}

Et une version plus riche :)

location ~ .php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME /path/vers/root/directory$fastcgi_script_name;
  fastcgi_param  PHP_VALUE  "open_basedir=/path/vers/lib/directory";
  include fastcgi_params;
}

Pour le safe_mode (non recommandé et bientôt deprecated au passage) ou les directives du même type on utilise le flag :

fastcgi_param  PHP_ADMIN_VALUE  "safe_mode=On";
fastcgi_param  PHP_ADMIN_VALUE  "disable_functions=exec,passthru,shell_exec, system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source";

Je n'ai, hélas, pas trouvé de fonctionnalité similaire pour lighttpd, mais je n'ai pas testé lighttpd avec du php-fpm.