我正在尝试访问我的Laravel 4项目中的一个系统变量。类似于使用ENV['VARIABLE_NAME']访问RoR项目中的系统变量。
在我的Laravel代码中,getenv('VARIABLE_NAME')返回一个空字符串。但是,我可以在命令提示符下使用php -r "echo getenv('VARIABLE_NAME')"访问这个变量并将其打印到屏幕上。
php -i确认这个变量也存储在php的$_SERVER超级全局中。但是,试图从我的项目的$_SERVER['VARIABLE_NAME']文件访问database.php会导致Undefined index: VARIABLE_NAME错误。
由于某些原因(例如,可能的安全问题),我不能从php访问任意的系统变量吗?如果是这样的话,我如何向我的Laravel 4项目公开我需要的系统变量?
如果配置重要,我将使用php5-fpm和nginx在Ubuntu13.04服务器上提供PHP。PHP版本为5.5。
发布于 2013-11-20 22:43:00
在与此进行了长时间的必要斗争之后,正确的方法是在php5-fpm安装的pool.d目录中使用php5-fpm www.conf文件。对我来说,这是在/etc/php5/fpm/pool.d/www.conf。
在www.conf中,文件中有一个特定的部分,其中列出了几个环境变量,语法如下:
env[VARNAME] = $ENV_VAR_NAME因此,只需添加您自己的,然后您就可以访问这些变量在您的Laravel应用程序
getenv('VARNAME')就像冠军一样。
发布于 2013-11-19 00:49:42
这看起来像是一个与nginx相关的问题,nginx通过fastcgi_param指令将参数传递给PHP,所以,您必须设置它,只需添加一个您需要的设置其他params的位置,这是一个示例(设置FastCGI变量)。
; /etc/nginx/fastcgi_params
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;检查nginx如何处理请求和这个答案 (这个也是)。我可以在PHP上访问Apache上的任何环境变量。希望这有帮助,但不能说得更具体。
https://stackoverflow.com/questions/20060426
复制相似问题