How to set environment variable in PHP using Apache / FastCGI?

I need to define an environment variable called SQLANY17 , and this variable must be available in PHP (i.e. in the "Environment" section of the standard phpinfo() page). PHP runs through FastCGI and I am running CentOS 7 x64, Apache 2.4.6, and PHP 5.5.30.

I edited /etc/httpd/conf.d/fcgid.conf , which already exists in my distribution. According to the documentation, the environment can be defined using FcgidInitialEnv.

 <IfModule mod_fcgid.c> # ... FcgidInitialEnv SQLANY17 /opt/sqlanywhere17 </IfModule> 

However, this does not work even after a complete restart of the computer. Any ideas? I am sure that fcgid.conf correctly, because entering some random characters prevents the restart of the Apache server.

enter image description here

In my setup, Nginx proxy requests for Apache This is nginx.conf for the example.com host:

 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; } } 

And this is httpd.conf for the same host:

 <VirtualHost 192.168.1.131:7080 > ServerName "example.com:80" ServerAlias "www.example.com" ServerAlias "ipv4.example.com" ServerAdmin " administrator@example.com " 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> 
+2
php environment-variables apache cgi fastcgi
source share
1 answer

First you need to make sure the module is loaded. Are you sure it is?

PHP applications are usually configured using the FcgidWrapper directive and the corresponding shell script. A shell script may be the appropriate place to define any environment variables required by the application, such as PHP_FCGI_MAX_REQUESTS or something else. (Environment variables can also be set using FcgidInitialEnv, but then apply to all applications.)

Here is an example that uses a shell script to call PHP:

PHP application - / usr / local / phpapp / phpinfo.php

 <?php phpinfo(); ?> 

Configuration directives

 # 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/ <Location /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 </Location> 

Php shell script - / 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 

Reviewed: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

0
source share

All Articles