Les variables d'environnement et PHP
J'ai un serveur ubuntu avec une poignée d'environnement personnalisé défini dans /etc/environnement selon les recommandation de la communauté ubuntu
Lorsque je utiliser php en ligne de commande je peux utiliser le php est getenv()
fonction pour accéder à ces variables.
Aussi, si je lance phpinfo()
à partir de la ligne de commande, je vois toutes mes variables dans la section de l'ENVIRONNEMENT.
CEPENDANT:
Lorsque vous essayez d'accéder aux mêmes données à l'intérieur des processus en cours d'exécution par php5-fpm ces données ne sont pas disponibles. Tout ce que je peux voir dans la section ENVIRONNEMENT de phpinfo()
est:
USER www-data
HOME /var/www
Je sais que la ligne de commande utilise cette ini:
/etc/php5/cli/php.ini
Et fpm utilise:
/etc/php5/fpm/php.ini
Je n'ai pas réussi à trouver toutes les différences entre les deux qui pourrait expliquer pourquoi les variables d'environnement ne sont pas dans les deux.
Également s'exécuter:
sudo su www-data
et puis echo les variables d'environnement, je m'attends ils sont en effet disponibles à www-data de l'utilisateur.
Que dois-je faire pour obtenir mon variables d'environnement dans le processus php exécuté par fpm?
- Avez-vous vérifié votre php-fpm processus est en cours d'exécution en vertu de l'utilisateur correct?
Vous devez vous connecter pour publier un commentaire.
Il s'avère que vous devez définir explicitement l'ENV de vars dans le php-fpm.conf
Voici un exemple:
1. Définition des variables d'environnement automatiquement en php-fpm.conf
2. Définition des variables d'environnement manuellement en php-fpm.conf
! Les deux méthodes sont décrites dans php-fpm.conf:
J'ai trouvé la solution dans ce github discussion .
php-fpm
est commencé parsystemd
vous pouvez avoir besoin d'au premier point il où obtenir de l'env de vars. E. g. dans/lib/systemd/system/php7.2-fpm.service
ensembleEnvironmentFile=/etc/environment
Le problème, c'est lorsque vous exécutez le php-fpm. Le processus de ne pas charger l'environnement.
Vous pouvez le charger dans le script de démarrage.
Mon php-fpm est installé par apt-get.
Donc modifier la
et ajouter (attention à l'espace entre le point et la barre oblique)
et de modifier le /etc/profile pour ajouter
Dans le env.sh. Vous pouvez
export
l'environnement tout ce dont vous avez besoin.Ensuite modifier
ajouter
env[MY_ENV_VAR_1] = 'value1'
en vertu de la[www]
section.Dernier. redémarrez le php-fpm. Vous aurez l'environnement de la charge par le fpm.