getenvphp
㈠ php页面中能否得到自定义的环境变量
看看能不能放到apache env里,用 apache_getenv 取得。或者定一个单独的php 文件,在每个项目中都include近来。
㈡ php使用getenv('REMOTE_ADDR')得到的ip是0.0.0.0
奇怪啊,getenv('REMOTE_ADDR')和$_SERVER['REMOTE_ADDR']的确都是正确的.
㈢ php getenv 怎么设置
在你的用户表上增加一个字段,最后登录时间(last_login),建议再增加一个字段,记录最后登录IP(last_login_ip)。
㈣ PHP获取用户所在城市
functiongetip(){
if(getenv("HTTP_CLIENT_IP")&&strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
$ip=getenv("HTTP_CLIENT_IP");
elseif(getenv("HTTP_X_FORWARDED_FOR")&&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown"))
$ip=getenv("HTTP_X_FORWARDED_FOR");
elseif(getenv("REMOTE_ADDR")&&strcasecmp(getenv("REMOTE_ADDR"),"unknown"))
$ip=getenv("REMOTE_ADDR");
elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],"unknown"))
$ip=$_SERVER['REMOTE_ADDR'];
else
$ip="unknown";
return($ip);
}
functiongetIPLoc_sina($queryIP){
$url='http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;
$ch=curl_init($url);//初始化url地址
curl_setopt($ch,CURLOPT_ENCODING,'utf8');//设置一个cURL传输选项
curl_setopt($ch,CURLOPT_TIMEOUT,10);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//获取数据返回
$location=curl_exec($ch);//执行一个cURL会话
$location=json_decode($location);//对JSON格式的字符串进行编码
curl_close($ch);//关闭一个cURL会话
$loc="";
if($location===FALSE)return"地址不正确";
if(empty($location->desc)){
$loc=$location->city;
}else{$loc=$location->desc;}
return$loc;
}
$SA_IP=getip();
$city=getIPLoc_sina($SA_IP);
㈤ php怎么获取访问者的IP 我找的代码是获取服务端的还是客户端的啊
这个代码是获取客户端的
㈥ 如何让PHP能够读取系统环境变量
一、fpm模式
1、通过服务器传递
如在的配置里设置:
fastcgi_param ENV_XXX 123456;
每次页面请求nginx都会将此变量传递给php,php可以通过getenv函数或$_SERVER全局变量获得。
2、通过fpm配置传递
fpm在每次启动时都会读取php-fpm.conf文件中的环境变量设置,如:
env[ENV_XXX]="test test"
或者让fpm读取系统环境变量,如:
env[ENV_XXX]=$ENV_XXX
注意此种方式要确保系统环境变量存在,且不被sudo禁用。
如果fpm是用sudo方式启动,默认sudo会禁用一些环境变量,可以通过以下方式放开限制:
vim /etc/sudoers
Defaults env_reset
Defaults env_keep = "ENV_XXX"
或者干脆放开所有限制:
Defaults !env_reset
最后,如果修改了php-fpm.conf中的设置需要重启fpm才能生效,同样php可以通过getenv函数或$_SERVER全局变量获得环境变量。
二、命令行模式
命令行模式限制较少,可以通过getenv函数或$_SERVER全局变量获取对当前执行用户有效的系统环境变量,同样要注意sudo的限制。
㈦ getenv $_SERVER 区别
我查这也查了半天 什么都没找出来~~
$spager=$_SERVER["SERVER_NAME"];
或者
$spager=getenv('SERVER_NAME');
都可以得到同样结果
...
SERVER是服务器超级全局变量数组
也就是可以在任何页面调用.
这数组里面保存了 很多东西
例如服务器IP 客户IP
浏览器型号..等等
我们可以使用这些信息 对用户做一些判断..
例如你看到的图片 可以显示你的IP地址
就是通过这个数组 加上IMAGE 函数实现的
下面我列出$_SERVER内容
-------------------------------------
“GATEWAY_INTERFACE”
服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
“SERVER_NAME”
当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定。
“SERVER_SOFTWARE”
服务器标识的字串,在响应请求时的头信息中给出。
“SERVER_PROTOCOL”
请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
“REQUEST_METHOD”
访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
注: 如果请求的方式是 HEAD,PHP 脚本将在送出头信息后中止(这意味着在产生任何输出后,不再有输出缓冲)。
“REQUEST_TIME”
请求开始时的时间戳。从 PHP 5.1.0 起有效。
“QUERY_STRING”
查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。
“DOCUMENT_ROOT”
当前运行脚本所在的文档根目录。在服务器配置文件中定义。
“HTTP_ACCEPT”
当前请求的 Accept: 头信息的内容。
“HTTP_ACCEPT_CHARSET”
当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。
“HTTP_ACCEPT_ENCODING”
当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。
“HTTP_ACCEPT_LANGUAGE”
当前请求的 Accept-Language: 头信息的内容。例如:“en”。
“HTTP_CONNECTION”
当前请求的 Connection: 头信息的内容。例如:“Keep-Alive”。
“HTTP_HOST”
当前请求的 Host: 头信息的内容。
“HTTP_REFERER”
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。
“HTTP_USER_AGENT”
当前请求的 User-Agent: 头信息的内容。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。也可以使用 get_browser() 得到此信息。
“HTTPS”
如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
“REMOTE_ADDR”
正在浏览当前页面用户的 IP 地址。
“REMOTE_HOST”
正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR。
注: 必须配置 Web 服务器来建立此变量。例如 Apache 需要在 httpd.conf 中有 HostnameLookups On。参见 gethostbyaddr()。
“REMOTE_PORT”
用户连接到服务器时所使用的端口。
“SCRIPT_FILENAME”
当前执行脚本的绝对路径名。
注: 如果脚本在 CLI 中被执行,作为相对路径,例如 file.php 或 ../file.php,$_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。
“SERVER_ADMIN”
该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。
“SERVER_PORT”
服务器所使用的端口。默认为“80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
“SERVER_SIGNATURE”
包含服务器版本和虚拟主机名的字符串。
“PATH_TRANSLATED”
当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
㈧ PHP如何添加预定义常量或变量
常量使用define语句定义即可
全局变量可以定义到全局变量数组$GLOBALS中
参考手册 : http://php.net/manual/zh/rese...
看题主的问法,感觉"环境变量"可能符合题主要求
nginx配置PHP server的时候可以增加以下指令
fastcgi_param CUSTOM_ENV_VAR "my_env_value";
之后只要是通过nginx访问的PHP请求,在任何代码中中使用 $_SERVER['CUSTOM_ENV_VAR'] 就能取到你需要的值
又或者在fastcgi的配置文件中增加一行:
env[CUSTOM_ENV_VAR]="my_env_value"
之后只要是php-fastcgi处理的PHP文件,都可以通过 getenv('CUSTOM_ENV_VAR'); 来获取设置的值
如果题主确实打算不亲自define而要得到类似E_ALL那样的常量的话,就需要写点C了
题主可以新建一个自己的扩展(或者直接随便找个你会编译的扩展也行),在PHP_MINIT_FUNCTION中使用以下宏来定义自己的常量
REGISTER_STRINGL_CONSTANT("MY_SITE_VERSION", "1.0", 3, CONST_PERSISTENT);
之后重新编译PHP即可.
㈨ php中如何读取环境变量
看看能不能放到apache env里,
用 apache_getenv 取得。或者定一个
单独的php 文件,在每个
项目中都include近来。
㈩ 如何让PHP能够读取系统环境变量
一、fpm模式
1、通过服务器传递
如在nginx的配置里设置:
fastcgi_param ENV_XXX 123456;
每次页面请求nginx都会将此变量传递给php,php可以通过getenv函数或$_SERVER全局变量获得。
2、通过fpm配置传递
fpm在每次启动时都会读取php-fpm.conf文件中的环境变量设置,如:
env[ENV_XXX]="test test"
或者让fpm读取系统环境变量,如:
env[ENV_XXX]=$ENV_XXX
注意此种方式要确保系统环境变量存在,且不被sudo禁用。
如果fpm是用sudo方式启动,默认sudo会禁用一些环境变量,可以通过以下方式放开限制:
vim /etc/sudoers
Defaults env_reset
Defaults env_keep = "ENV_XXX"
或者干脆放开所有限制:
Defaults !env_reset
最后,如果修改了php-fpm.conf中的设置需要重启fpm才能生效,同样php可以通过getenv函数或$_SERVER全局变量获得环境变量。
二、命令行模式
命令行模式限制较少,可以通过getenv函数或$_SERVER全局变量获取对当前执行用户有效的系统环境变量,同样要注意sudo的限制。