<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]php $_ENV为空的原因分析，用于后台su权限。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 03 Mar 2010 06:34:48 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	$_ENV记载了一些系统环境变量（因为牵扯到实际的操作系统，所以不可能给出$_ENV的完整列表）。<br/>但有些朋友的$_ENV是空的，可能是原因是：<br/>你的php.ini的variables_order值为&quot;GPCS&quot;，也就是说系统在定义 PHP预定义变量时的顺序是GET,POST,COOKIES,SERVER,没有定义Environment(E)，你可以修改php.ini文件的 variables_order值为你想要的顺序，如：&quot;EGPCS&quot;。这时，$_ENV的值就可以取得了<br/>EGPCS值(EGPCS是Environment、Get、Post、Cookies、Server的缩写 -- 这是PHP中外部变量来源的全部范围) <br/><br/><textarea name="code" class="php" rows="15" cols="100">
root@raspberrypi:/data/htdocs/t.jackxiang.com# /usr/bin/php -r &quot;phpinfo();&quot;&#124;grep variables_order&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
variables_order =&gt; GPCS =&gt; GPCS
</textarea><br/><br/>修改一下：<br/>root@raspberrypi:/data/htdocs/t.jackxiang.com# /usr/bin/php -r &quot;phpinfo();&quot;&#124;grep php.ini<br/>Loaded Configuration File =&gt; /etc/php5/cli/php.ini<br/>打开这个选项：<br/>; Default Value: &quot;EGPCS&quot;<br/>; Development Value: &quot;GPCS&quot;<br/>; Production Value: &quot;GPCS&quot;;<br/>; http://php.net/variables-order<br/>; variables_order = &quot;GPCS&quot;<br/>variables_order = &quot;EGPCS&quot;<br/><textarea name="code" class="php" rows="15" cols="100">
root@raspberrypi:/data/htdocs/t.jackxiang.com# /usr/bin/php -r &quot;phpinfo();&quot;&#124;grep variables_order
variables_order =&gt; EGPCS =&gt; EGPCS
</textarea><br/><br/><br/><div class="code">/usr/local/php/bin/php -r &quot;phpinfo();&quot;&#124;grep variables_order<br/>variables_order =&gt; EGPCS =&gt; EGPCS</div><br/><br/><br/><br/>PHP中的$_ENV ：来自：http://blog.sina.com.cn/s/blog_a6bbf41e010169xl.html<br/>============================================================================<br/>PHP中的$_ENV是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量，我们可以在PHP 程序的任何地方直接访问它。<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;$_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素，你可以尝试直接输出它。<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;当你想看看一个变量中究竟有什么东西在里面时，我所知道的方式有三种：<br/>&nbsp;&nbsp;&nbsp;&nbsp;1、var_dump($_ENV);<br/>&nbsp;&nbsp;&nbsp;&nbsp;2、print_r($_ENV);<br/>&nbsp;&nbsp;&nbsp;&nbsp;3、foreach($_ENV as $key=&gt;$val)&#123;echo $key.&#039;--------&#039;.$val.&#039;&lt;br&gt;&#039;;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;这三种方式中，第一种我觉得最方便而且输出的内容格式清晰。<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;由于$_ENV变量是取决于服务器的环境变量的，从不同的服务器上获取的$_ENV变量打印出的结果可能是完全不同的。所以无法像$_SERVER 那样列出完整的列表。以下是$_ENV 数组包含的比较通用的元素：<br/>有时候，$_ENV会为空，其原因通常是php的配置文件php.ini的配置项为：variables_order = &quot;GPCS&quot;。要想让$_ENV的值不为空，那么variables_order的值应该加上一个大写字母“E”，即：variables_order = &quot;EGPCS&quot;。<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;上述配置表示了PHP接受的外部变量来源及顺序，EGPCS是Environment、Get、Post、Cookies、Server的缩写。如果variables_order 的配置中缺少E ，则PHP 无法接受环境变量，那么$_ENV 也就为空了。<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;由于开启$_ENV，即variables_order = &quot;EGPCS&quot;会导致一些性能损失，按php官方的说法是，在生产环境中，不推荐使用。他们更推荐使用getenv (string $varname)函数来获取Environment中的值，而这点需要在编程时就注意到。如果编程时用了$_ENV而variables_order中又没有配置为variables_order = &quot;EGPCS&quot;，则程序运行时可能会报错。
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]php $_ENV为空的原因分析，用于后台su权限。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>