Как установить переменную среды в PHP с помощью Apache / FastCGI?

Мне нужно определить переменную среды с именем SQLANY17 и эта переменная должна быть доступна в PHP (т.е. в разделе «Среда» на стандартной phpinfo() ). PHP выполняется через FastCGI, и я запускаю CentOS 7 x64, Apache 2.4.6 и PHP 5.5.30.

Я отредактировал /etc/httpd/conf.d/fcgid.conf который уже существует в моем дистрибутиве. Согласно документации , среда может быть определена с помощью FcgidInitialEnv.

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

Однако это не работает, даже после полной перезагрузки компьютера. Есть идеи? Я уверен, что fcgid.conf правильно проанализирован, потому что ввод некоторых случайных символов предотвращает перезапуск сервера Apache.

введите описание изображения здесь

В моей настройке прокси-запросы Nginx для Apache Это nginx.conf для хоста 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; } } 

И это httpd.conf для одного и того же хоста:

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

Во-первых, вы должны убедиться, что модуль загружен. Вы уверены, что это так?

Приложения PHP обычно настраиваются с использованием директивы FcgidWrapper и соответствующего сценария оболочки. Скрипт-оболочка может быть подходящим местом для определения любых переменных среды, требуемых приложением, таких как PHP_FCGI_MAX_REQUESTS или что-то еще. (Переменные среды также могут быть установлены с помощью FcgidInitialEnv, но затем применяются ко всем приложениям.)

Вот пример, который использует сценарий оболочки для вызова PHP:

Приложение PHP – /usr/local/phpapp/phpinfo.php

 <?php phpinfo(); ?> 

Конфигурационные директивы

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

Ссылка: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html