如何使用Apache / FastCGI在PHP中设置环境变量?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Apache / FastCGI在PHP中设置环境变量?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3562字,纯文字阅读大概需要6分钟。
内容图文
![如何使用Apache / FastCGI在PHP中设置环境变量?](/upload/InfoBanner/zyjiaocheng/697/2b19530f500c45b0a0ac268c71061711.jpg)
我需要定义一个名为SQLANY17的环境变量,这个变量应该在PHP中可用(即在标准phpinfo()页面的“Environment”下). PHP通过FastCGI执行,我运行的是CentOS 7 x64,Apache 2.4.6和PHP 5.5.30.
我编辑了/etc/httpd/conf.d/fcgid.conf,它已存在于我的发行版中. According to the documentation可以使用FcgidInitialEnv定义环境.
<IfModule mod_fcgid.c>
# ...
FcgidInitialEnv SQLANY17 /opt/sqlanywhere17
</IfModule>
但是,即使在整机重启后,这也不起作用.有任何想法吗?我确定fcgid.conf被正确解析,因为输入一些随机字符会阻止Apache服务器重启.
在我的设置中,Nginx代理对Apache的请求这是主机example.com的nginx.conf:
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
内容总结
以上是互联网集市为您收集整理的如何使用Apache / FastCGI在PHP中设置环境变量?全部内容,希望文章能够帮你解决如何使用Apache / FastCGI在PHP中设置环境变量?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。