Comment définir une variable d’environnement en PHP avec Apache / FastCGI?

J’ai besoin de définir une variable d’environnement nommée SQLANY17 et cette variable devrait être disponible en PHP (c’est-à-dire sous “Environnement” dans la page standard phpinfo() ). PHP est exécuté via FastCGI et j’utilise CentOS 7 x64, Apache 2.4.6 et PHP 5.5.30.

J’ai édité /etc/httpd/conf.d/fcgid.conf qui existe déjà dans ma dissortingbution. Selon la documentation, un environnement peut être défini à l’aide de FcgidInitialEnv.

  # ... FcgidInitialEnv SQLANY17 /opt/sqlanywhere17  

Cependant, cela ne fonctionne pas, même après un redémarrage complet de la machine. Des idées? Je suis sûr que le fcgid.conf est correctement analysé car la saisie de caractères aléatoires empêche le redémarrage du serveur Apache.

entrer la description de l'image ici

Dans ma configuration, les requêtes de proxy Nginx à Apache Il s’agit de nginx.conf pour l’hôte example.com:

 server { listen 192.168.1.131:80; server_name example.com; server_name www.example.com; server_name ipv4.example.com; client_max_body_size 128m; root "/var/www/vhosts/example.com/httpdocs"; access_log "/var/www/vhosts/system/example.com/logs/proxy_access_log"; error_log "/var/www/vhosts/system/example.com/logs/proxy_error_log"; if ($host ~* ^www.example.com$) { rewrite ^(.*)$ http://example.com$1 permanent; } location / { proxy_pass http://192.168.1.131:7080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Accel-Internal /internal-nginx-static-location; access_log off; } } 

Et ceci est httpd.conf pour le même hôte:

  ServerName "example.com:80" ServerAlias "www.example.com" ServerAlias "ipv4.example.com" ServerAdmin "[email protected]" UseCanonicalName Off DocumentRoot "/var/www/vhosts/example.com/httpdocs" CustomLog /var/www/vhosts/system/example.com/logs/access_log ErrorLog "/var/www/vhosts/system/example.com/logs/error_log"  SuexecUserGroup "example" "psacln"   FcgidInitialEnv PP_CUSTOM_PHP_INI /var/www/vhosts/system/example.com/etc/php.ini FcgidInitialEnv PP_CUSTOM_PHP_CGI_INDEX plesk-php55-fastcgi FcgidMaxRequestLen 134217728     SetHandler fcgid-script FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .php Options +ExecCGI   Options -Includes -ExecCGI   RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ http://example.com$1 [L,R=301]   

Tout d’abord, vous devez vous assurer que le module est chargé. Êtes-vous sûr que c’est le cas?

Les applications PHP sont généralement configurées à l’aide de la directive FcgidWrapper et d’un script d’encapsulation correspondant. Le script wrapper peut être un endroit approprié pour définir les variables d’environnement requirejses par l’application, telles que PHP_FCGI_MAX_REQUESTS ou toute autre chose. (Les variables d’environnement peuvent également être définies avec FcgidInitialEnv, mais elles s’appliquent ensuite à toutes les applications.)

Voici un exemple qui utilise un script wrapper pour invoquer PHP:

Application PHP – /usr/local/phpapp/phpinfo.php

  

Directives de configuration

 # FcgidMaxRequestsPerProcess should be <= PHP_FCGI_MAX_REQUESTS # The example PHP wrapper script overrides the default PHP setting. FcgidMaxRequestsPerProcess 10000 # Uncomment the following line if cgi.fix_pathinfo is set to 1 in # php.ini: # FcgidFixPathinfo 1 Alias /phpapp/ /usr/local/phpapp/  AddHandler fcgid-script .php Options +ExecCGI FcgidWrapper /usr/local/bin/php-wrapper .php # Customize the next two directives for your requirements. Order allow,deny Allow from all  

Script d’encapsulation PHP – / usr / local / bin / php-wrapper

 #!/bin/sh # Set desired PHP_FCGI_* environment variables. # Example: # PHP FastCGI processes exit after 500 requests by default. PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS # Replace with the path to your FastCGI-enabled PHP executable exec /usr/local/bin/php-cgi 

Référencé: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html