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 distribution. According to the documentation un environnement peut être défini à l'aide de FcgidInitialEnv.Comment définir une variable d'environnement en PHP avec Apache/FastCGI?
<IfModule mod_fcgid.c>
# ...
FcgidInitialEnv SQLANY17 /opt/sqlanywhere17
</IfModule>
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.
Dans ma configuration demandes de procurations Nginx à Apache C'est 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 cela est httpd.conf
pour le même hôte:
<VirtualHost 192.168.1.131:7080 >
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"
<IfModule mod_suexec.c>
SuexecUserGroup "example" "psacln"
</IfModule>
<IfModule mod_fcgid.c>
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
</IfModule>
<Directory /var/www/vhosts/example.com/httpdocs>
<IfModule mod_fcgid.c>
<Files ~ (\.php$)>
SetHandler fcgid-script
FCGIWrapper /var/www/cgi-bin/cgi_wrapper/cgi_wrapper .php
Options +ExecCGI
</Files>
</IfModule>
Options -Includes -ExecCGI
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com$1 [L,R=301]
</IfModule>
</VirtualHost>
Salut, merci pour aider. Je veux définir cette variable d'environnement pour toutes les applications: serveur est un hôte virtuel géré avec Plesk et sans cette variable d'environnement, PHP ne réussirait pas à charger une extension (c'est-à-dire SQL Anywhere) et à son tour écraser les autres processus Plesk. Dans mon système, le php-wrapper est déjà défini par Plesk et c'est un binaire, pas un script shell (/ var/www/cgi-bin/cgi_wrapper/cgi_wrapper). Je ne peux pas utiliser votre solution. Une idée de pourquoi la mienne ne fonctionne pas? – gremo
Etes-vous sûr que le module est chargé? Basé sur ce que vous avez posté, il semble que ce n'est pas réellement chargé. Dans le cas contraire, vous devez publier la totalité de votre configuration httpd, mais assurez-vous de charger le module fastcgi quelque part. – mikeb
FastCGI fonctionne. J'ai mis à jour ma question avec la configuration complète et comme vous pouvez voir Nnginx agir comme un proxy devant Apache qui à son tour utilise FastCGI. – gremo