Pages : 1
#1 Le 07/08/2016, à 21:01
- seabird2_fr
php.ini local et php-fpm
Bonjour,
Sur un de mes serveurs , j'utilise php-fpm avec le système de pool afin de cloisonner les sites.
Mais je ne veux pas autoriser l'upload de fichiers dans un dossier du site.
Lorsque j'utilisais php en module apache , il suffisait que je mette dans le dossier un php.ini local avec file_uploads=off.
Mais avec php-fpm , les php.ini locaux ne fonctionnent visiblement plus. Il faut utiliser les .user.ini
Mais problème dans les .user.ini on ne peut mettre que des instructions PHP_INI_PERDIR ou en PHP_INI_ALL donc file_uploads=off ne fonctionne pas.
Donc peut-on dans un pool mettre php_admin_flag[file_uploads]= off pour un dossier en particulier ?
Je ne vois pas comment faire sinon.
Merci,
Eric
Dernière modification par seabird2_fr (Le 07/08/2016, à 21:24)
Hors ligne
#2 Le 07/08/2016, à 22:02
- J5012
Re : php.ini local et php-fpm
utiliser les mots cles : php-fpm upload limit
→ fichier /etc/php5/fpm/php.ini
→ variables : upload_max_filesize et post_max_size
Hors ligne
#3 Le 07/08/2016, à 22:38
- seabird2_fr
Re : php.ini local et php-fpm
Bon , j'ai contourné le problème en laissant file_uploads=on dans le php.ini global
et en mettant dans le .user.ini du dossier
upload_max_filesize = 1
post_max_size = 1
Eric
Hors ligne
#4 Le 08/08/2016, à 14:09
- bobe
Re : php.ini local et php-fpm
Tu peux ajouter un fichier de configuration ciblant un dossier spécifique dans le dossier conf.d de php fpm :
[PATH=/path/to/dir]
file_uploads = off
Dernière modification par bobe (Le 08/08/2016, à 14:10)
Hors ligne
#5 Le 08/08/2016, à 14:13
- seabird2_fr
Re : php.ini local et php-fpm
Bonjour,
Tu peux ajouter un fichier de configuration ciblant un dossier spécifique dans le dossier conf.d de php fpm :
[PATH=/path/to/dir] file_uploads = off
A ben voilà très bien, merci, je n'étais pas sur de la syntaxe. je vais tester et voir ce que cela donne.
Tout ce qu'il y a en dessous de [PATH=/path/to/dir] n'est pris en compte que dans le dossier /path/to/dir, j'imagine ?
Eric
Hors ligne
#6 Le 08/08/2016, à 14:21
- bobe
Re : php.ini local et php-fpm
Yep. Voilà pour l'exemple mon fichier de conf pour phpmyadmin (installé à la main dans /opt) :
[PATH=/opt/phpmyadmin]
track_vars = on
allow_url_fopen = off
include_path = '.'
upload_max_filesize = '5M'
upload_tmp_dir = '/opt/phpmyadmin/tmp'
open_basedir = '/opt/phpmyadmin/'
session.gc_maxlifetime = 7200
edit: J'ai retrouvé la page du manuel : http://php.net/manual/en/ini.sections.php
Dernière modification par bobe (Le 08/08/2016, à 14:26)
Hors ligne
#7 Le 08/08/2016, à 14:36
- bobe
Re : php.ini local et php-fpm
Un des commentaires du manuel prétend qu'un bloc PATH ne s'applique qu'au dossier ciblé et non à ses sous-dossiers. Tu devrais vérifier ce point ;-)
Ou plus simple, si ton but est de désactiver l'upload pour un site spécifique, utilise plutôt [HOST=......]
Hors ligne
#8 Le 08/08/2016, à 16:03
- seabird2_fr
Re : php.ini local et php-fpm
C'est bizarre, tu es sur de la syntaxe ?
A priori
[PATH=/path/to/dir]
file_uploads = off
ne s'applique qu'à un php.ini
Car dans un pool, il n'accepte pas pour moi. Il y a une erreur.
Déjà dans un pool file_uploads = off n'est pas accepté (erreur), il faut mettre php_admin_flag[file_uploads]= off pour que cela fonctionne.
Eric
Dernière modification par seabird2_fr (Le 08/08/2016, à 16:04)
Hors ligne
#9 Le 08/08/2016, à 18:30
- bobe
Re : php.ini local et php-fpm
Non, non. Il faut que tu places un fichier de configuration .ini dans /etc/php/7.0/fpm/conf.d/ (ou /etc/php5/fpm/conf.d/ pour php5). J'ai parlé du dossier conf.d plus haut ;-)
Hors ligne
#10 Le 08/08/2016, à 18:36
- seabird2_fr
Re : php.ini local et php-fpm
Heu quelque-chose doit m'échapper.
Il faut mettre un fichier ini mais comment savoir à quel site l'appliquer , grâce au [PATH=/path/to/dir]?
L'ini doit porter quel nom ? n'importe lequel ?
Car en fait ,voilà comment j'ai fait.
J'ai fait une copie de l'exemple par défaut /etc/php5/fpm/conf.d/www.conf et j'ai par exemple pour site1.conf:
[user1]
…..
user = user1
group = user1
php_admin_value[open_basedir] = /home/user1/www:/tmp
php_value[output_buffering] = off
;php_flag[display_errors] = off
;php_value[error_reporting] = 0
;php_admin_flag[file_uploads]= off
…..
listen = /var/run/php5-fpm-user1.sock
Il y a vraiment quelque-chose qui m'échappe
Dernière modification par seabird2_fr (Le 08/08/2016, à 18:41)
Hors ligne
#11 Le 08/08/2016, à 19:06
- bobe
Re : php.ini local et php-fpm
Si tu veux faire une discrimination sur le site, utilise plutôt HOST.
Créé un fichier /etc/php5/fpm/conf.d/60-monsite.ini (le nom importe peu, c'est pour l'organisation de ta config; le 60- pour qu'il soit chargé après la configuration de base et la configuration des extensions) avec ceci dedans :
[HOST=monsite.tld]
file_uploads = off
Redémarre le service php-fpm.
Hors ligne
#12 Le 08/08/2016, à 19:14
- seabird2_fr
Re : php.ini local et php-fpm
Si tu veux faire une discrimination sur le site, utilise plutôt HOST.
Créé un fichier /etc/php5/fpm/conf.d/60-monsite.ini (le nom importe peu, c'est pour l'organisation de ta config; le 60- pour qu'il soit chargé après la configuration de base et la configuration des extensions) avec ceci dedans :
[HOST=monsite.tld] file_uploads = off
Redémarre le service php-fpm.
Oui mais peut -on faire à la fois une discrimination de site et de dossier dans celui ci ?
Car je veux par exemple:
http: //site.com/dossier1/ avec file_uploads = off
http: //site.com/dossier2/ avec file_uploads = on
Merci
Hors ligne
#13 Le 08/08/2016, à 19:19
- bobe
Re : php.ini local et php-fpm
Alors utilise plutôt PATH. À moins que tu aies deux virtualhost ciblant le même espace web, ça ne doit pas poser de problème non ?
Hors ligne
#14 Le 08/08/2016, à 19:26
- seabird2_fr
Re : php.ini local et php-fpm
Non non je n'ai pas créé deux vhost sur le même espace.
Je vais donc tester avec path .
merci en tout cas .
Eric
Hors ligne
#15 Le 08/08/2016, à 20:06
- seabird2_fr
Re : php.ini local et php-fpm
Ok ca marche nickel et visiblement c'est récursif.
Mais je pense que j'ai un souci avec le répertoire temporaire. C'est bien upload_tmp_dir ?
car le fichier n'est pas envoyé dans uploads
je pense aussi que cela vient de l'endroit où est le formulaire. J'ai pourtant testé aussi en le mettant dans /uploads
upload_tmp_dir = '/home/site1/www/tmp'
[PATH=/home/site1/www]
file_uploads = off
[PATH=/home/site1/www/uploads]
file_uploads = on
[PATH=/home/site1/www/tmp]
file_uploads = on
Eric
Dernière modification par seabird2_fr (Le 08/08/2016, à 20:23)
Hors ligne
#16 Le 08/08/2016, à 20:35
- bobe
Re : php.ini local et php-fpm
À vérifier, mais je ne pense pas que tu puisses mettre une directive en dehors d'une section [PATH=...] ou [HOST=...] quand tu utilises ces dernières.
Hors ligne
#17 Le 08/08/2016, à 22:33
- seabird2_fr
Re : php.ini local et php-fpm
À vérifier, mais je ne pense pas que tu puisses mettre une directive en dehors d'une section [PATH=...] ou [HOST=...] quand tu utilises ces dernières.
Si si ça fonctionne une directive à l'extérieur.
Je vois bien upload_tmp_dir modifié en faisant un phpinfo.
Ma foi, je ne vois pas trop comment faire pour faire fonctionner ça.
En tout cas merci de ton aide.
Eric
Dernière modification par seabird2_fr (Le 08/08/2016, à 22:34)
Hors ligne
Pages : 1