<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>为IT服务 [龙飞的博客] &#187; php相关</title>
	<atom:link href="http://226617.cn/archives/category/just-technology/about-php/feed" rel="self" type="application/rss+xml" />
	<link>http://226617.cn</link>
	<description>什么都略懂一点，生活就多彩一些</description>
	<lastBuildDate>Thu, 09 Feb 2012 04:03:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>child pid XXXX exit signal Segmentation fault (11)的一个解决办法</title>
		<link>http://226617.cn/archives/959.htm</link>
		<comments>http://226617.cn/archives/959.htm#comments</comments>
		<pubDate>Sun, 08 Jan 2012 15:58:02 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[php相关]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=959</guid>
		<description><![CDATA[最近在测试一个虚拟主机管理软件LuManager2.0，用的centos6 64位的系统装完进入管理界面 始终出错 firefox打开页面一片空白，看apache的日志是 child pid XXXX exit signal Segmentation fault (11) 手工传个phpinfo... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>最近在测试一个虚拟主机管理软件LuManager2.0，用的centos6 64位的系统装完进入管理界面 始终出错 firefox打开页面一片空白，看apache的日志是</p>
<p>child pid XXXX exit signal Segmentation fault (11)</p>
<p>手工传个phpinfo进去倒是可以执行的，这个错误造成的原因很多，多半是和内存啊模块之类的有关，仔细看了看apache和php的配置，发现php里面启用了eaccelerator ，关掉重启apache后解决了。</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/959.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>完美解决nginx环境下服务器上多站点WebShell访问限制问题</title>
		<link>http://226617.cn/archives/887.htm</link>
		<comments>http://226617.cn/archives/887.htm#comments</comments>
		<pubDate>Wed, 06 Jul 2011 01:26:57 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[nginx相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[open_basedir]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=887</guid>
		<description><![CDATA[完美解决nginx环境下服务器上多站点WebShell访问限制问题 http://www.discuz.net/thread-1497466-1-1.html wget http://www.php.net/get/php-5.2.10.tar.gz/from/this/mirror wget http://php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz tar zxv... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>完美解决nginx环境下服务器上多站点WebShell访问限制问题</p>
<p>http://www.discuz.net/thread-1497466-1-1.html</p>
<p><code><br />
wget http://www.php.net/get/php-5.2.10.tar.gz/from/this/mirror<br />
wget http://php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz<br />
tar zxvf php-5.2.10.tar.gz<br />
gzip -cd php-5.2.10-fpm-0.5.11.diff.gz | patch -d php-5.2.10 -p1<br />
cd php-5.2.10/<br />
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-ftp --without-pear<br />
</code><br />
<code><br />
vi main/fopen_wrappers.c<br />
</code><br />
<code><br />
/* {{{ php_check_open_basedir<br />
*/<br />
PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC)<br />
{<br />
/* Only check when open_basedir is available */<br />
if (PG(open_basedir) &#038;&#038; *PG(open_basedir)) {<br />
char *pathbuf;<br />
char *ptr;<br />
char *end; </p>
<p>下面加上：<br />
char *env_document_root = sapi_getenv("DOCUMENT_ROOT", sizeof("DOCUMENT_ROOT")-1 TSRMLS_CC);<br />
if (php_check_specific_open_basedir(ptr, path TSRMLS_CC) == 0) {<br />
efree(env_document_root);<br />
return 0;<br />
}<br />
</code></p>
<p>然后保存，退出。</p>
<p>php.in的open_basedir配置:<br />
修改：<br />
;open_basedir =<br />
为<br />
open_basedir = &#8220;/tmp/:/var/tmp/&#8221; </p>
<p>重启<br />
/usr/local/php/sbin/php-fpm restart </p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/887.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决编码为gb2312页面ajax交互汉字乱码的问题</title>
		<link>http://226617.cn/archives/876.htm</link>
		<comments>http://226617.cn/archives/876.htm#comments</comments>
		<pubDate>Tue, 25 Jan 2011 02:44:47 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[php相关]]></category>
		<category><![CDATA[软件相关]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=876</guid>
		<description><![CDATA[ajax只支持utf-8格式，不能支持gb2312编码格式，所以经常遇到gb2312的编码的程序使用ajax就出现乱码，刚找到一种解决方案是： 服务器端传送的数据仍是gb2312编码，客户端用js将汉字转变成utf8编码... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>ajax只支持utf-8格式，不能支持gb2312编码格式，所以经常遇到gb2312的编码的程序使用ajax就出现乱码，刚找到一种解决方案是：</p>
<p>服务器端传送的数据仍是gb2312编码，客户端用js将汉字转变成utf8编码显示在页面</p>
<p>search.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: text/html; charset=gb2312&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include</span> <span style="color: #0000ff;">'./search.htm'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>search.htm</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot; /&gt;
&lt;title&gt;高级搜索&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h3&gt;高级搜索&lt;/h3&gt;
&lt;form method=&quot;post&quot; action=&quot;&quot;&gt;
  学校类型:
  &lt;select name=&quot;schooltype&quot;&gt;
    &lt;option value=&quot;&quot;&gt;全部&lt;/option&gt;
    &lt;option value=&quot;1&quot;&gt;小学&lt;/option&gt;
    &lt;option value=&quot;2&quot;&gt;初中&lt;/option&gt;
  &lt;/select&gt;
  学校名称:
  &lt;select name=&quot;sid&quot; id=&quot;sid&quot;&gt;
    &lt;option value=&quot;&quot;&gt;请选择学校&lt;/option&gt;
  &lt;/select&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function ajax(settings) {
    var XHR = window.ActiveXObject ? new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;) : new XMLHttpRequest(), successed = false;
    XHR.open(settings.type, settings.url);
    if(settings.type == 'post')
     XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    XHR.send((!settings.cache ? 'time=' + new Date().getTime() + '&amp;' : '') + settings.data);
    settings.loader();
    setTimeout(function() {
        if(!successed) {
            alert('Resquest timeout!');
            XHR.abort();
        }
    }, settings.timeout);
    XHR.onreadystatechange = function() {
        if (XHR.readyState == 4 &amp;&amp; XHR.status == 200) {
            settings.callback(XHR.responseText.replace(/(^\s*)|(\s*$)/g, &quot;&quot;));
        }
        successed = true;
    }
}
function a(t) {
ajax({
  type: 'post',
  url: 'ajax.php',
  data: 'schooltype=' + t,
  timeout: 8000,
  cache: true,
  loader: function() {},
  callback: function(d) {
   var arr = eval(d);
   if(typeof(arr) == 'object') {
    var obj, option;
    document.getElementById('sid').innerHTML = '';
    for(var i = 0; obj = arr; i ++) {
     option = document.createElement('option');
     option.value = obj[0];
     option.innerHTML = txt2utf8(obj[1], '&amp;#');
     document.getElementById('sid').appendChild(option);
    }
   }
  }
})
}
function txt2utf8(string, prefix){
    for(var i=0,utf8=[];i&lt;string.length;utf8.push((prefix||'\\u')+string.charCodeAt(i++)));
    return utf8.join('');
}
a(0);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>ajax.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: text/html; charset=gb2312&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$schooltype</span> <span style="color: #339933;">=</span> <span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'schooltype'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'schooltype'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$schooltype</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;[['40', '太平溪镇花栗包完全小学'],['41', '太平溪镇长岭黑龙江希望小学'],['42', '乐天溪镇初级中学'],['43', '乐天溪镇莲沱初级中学']]&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;[['40', '太平溪镇花栗包完全小学'],['41', '太平溪镇长岭黑龙江希望小学']]&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;[['42', '乐天溪镇初级中学'],['43', '乐天溪镇莲沱初级中学']]&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>这个提到的方案有：<br />
一，服务器端json数据用php的iconv函数转换：iconv(&#8216;GB2312&#8242;, &#8216;UTF8&#8242;, &#8220;被转换字符串，输出到浏览器&#8221;);<br />
      客户端获取UTF8数据，再转成gb2312：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> gb2utf8<span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #006600; font-style: italic;">//GB编码是，ie通过二进制码utf8-&gt;gbk转为中文  </span>
     <span style="color: #003366; font-weight: bold;">var</span> glbEncode <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>  
     gb2utf8_data <span style="color: #339933;">=</span> data<span style="color: #339933;">;</span>  
     execScript<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;gb2utf8_data = MidB(gb2utf8_data, 1)&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;VBScript&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
     <span style="color: #003366; font-weight: bold;">var</span> t<span style="color: #339933;">=</span>escape<span style="color: #009900;">&#40;</span>gb2utf8_data<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/%u/g</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span>.<span style="color: #009900;">&#123;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>.<span style="color: #009900;">&#123;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>g<span style="color: #339933;">|&gt;,</span><span style="color: #3366CC;">&quot;%$2%$1&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">/%</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>A<span style="color: #339933;">-</span>Z<span style="color: #009900;">&#93;</span>.<span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span><span style="color: #009900;">&#40;</span>.<span style="color: #009900;">&#123;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>g<span style="color: #339933;">|&gt;,</span><span style="color: #3366CC;">&quot;@$1$2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
     t<span style="color: #339933;">=</span>t.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;@&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
     <span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>j<span style="color: #339933;">=</span>t.<span style="color: #660066;">length</span><span style="color: #339933;">,</span>k<span style="color: #339933;">;</span>  
     <span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">++</span>i<span style="color: #339933;">&lt;</span>j<span style="color: #009900;">&#41;</span><span style="color: #339933;">&gt;</span>  
         k<span style="color: #339933;">=</span>t.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
         <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>glbEncode<span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>  
             gb2utf8_char <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;0x&quot;</span><span style="color: #339933;">+</span>k<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
             execScript<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;gb2utf8_char = Chr(gb2utf8_char)&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;VBScript&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
             glbEncode<span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>escape<span style="color: #009900;">&#40;</span>gb2utf8_char<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
         <span style="color: #009900;">&#125;</span>  
         t<span style="color: #339933;">=</span>glbEncode<span style="color: #009900;">&#91;</span>k<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>t.<span style="color: #660066;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
     <span style="color: #009900;">&#125;</span>  
     gb2utf8_data <span style="color: #339933;">=</span> gb2utf8_char <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>  
     <span style="color: #000066; font-weight: bold;">return</span> unescape<span style="color: #009900;">&#40;</span>t.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;%&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>二，header(&#8220;Content-type&#8221;, &#8220;application/x-www-form-urlencoded; charset=GBK&#8221;); //输出头标，设置为GBK编码</p>
<p>三，在ajax请求数据前调用上面的方法指定请求使用的字符集:xmlHttp.setRequestHeader( &#8220;Content-Type&#8221;, &#8220;application/x-www-form-urlencoded;charset=gbk&#8221;);</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/876.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php开启open_basedir后启用eaccelerator时File() on line 0报错解决</title>
		<link>http://226617.cn/archives/847.htm</link>
		<comments>http://226617.cn/archives/847.htm#comments</comments>
		<pubDate>Mon, 14 Jun 2010 05:40:26 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[File()]]></category>
		<category><![CDATA[line 0]]></category>
		<category><![CDATA[open_basedir]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=847</guid>
		<description><![CDATA[open_basedir是php提升安全性的重要功能，eaccelerator是提速php的扩展模块，但是似乎默认环境下他们2一起用只要有require就会造成大量的php错误。 PHP Warning: Unknown: open_basedir restriction in effect. File() is ... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>open_basedir是php提升安全性的重要功能，eaccelerator是提速php的扩展模块，但是似乎默认环境下他们2一起用只要有require就会造成大量的php错误。</p>
<p><code><br />
PHP Warning:  Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (/www/:/tmp/) in Unknown on line 0<br />
</code></p>
<p>要解决这个问题的话在编译eaccelerator时 加上一个参数就行 &#8211;without-eaccelerator-use-inode<br />
官方也说将在0.9.6.1的下一个release中默认启用这个参数。</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/847.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下如何在一台机器上安装多个mysql实例</title>
		<link>http://226617.cn/archives/828.htm</link>
		<comments>http://226617.cn/archives/828.htm#comments</comments>
		<pubDate>Mon, 26 Apr 2010 17:14:31 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[mysql相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[只谈技术]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=828</guid>
		<description><![CDATA[最近再做个mysql一从多主的配置，需要在一台机器上安装多个mysql。 起先是按照复制了多了mysql 同时起，在琢磨如何做启动脚本的时候发现support-files目录下有个mysqld_multi.server文件，一查发现原... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>最近再做个mysql一从多主的配置，需要在一台机器上安装多个mysql。<br />
起先是按照复制了多了mysql 同时起，在琢磨如何做启动脚本的时候发现support-files目录下有个mysqld_multi.server文件，一查发现原来是现成的多实例管理工具。<br />
首先得新建个data目录给新的实例，可以把原来的data目录复制个新的 只需要mysql库，也可以用工具部属个</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="shell" style="font-family:monospace;">./scripts/mysql_install_db --basedir=/usr/local/mysql3307 --datadir=/mysql/mysql3307/data --user=mysql</pre></td></tr></table></div>

<p>然后修改下my.cnf<br />
主要增加</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="mysql" style="font-family:monospace;"><span style="color: #FF00FF;">&#91;</span>mysqld_multi<span style="color: #FF00FF;">&#93;</span>
mysqld <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>usr<span style="color: #CC0099;">/</span><span style="color: #990099; font-weight: bold;">local</span><span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span><span style="color: #000099;">bin</span><span style="color: #CC0099;">/</span>mysqld_safe
mysqladmin <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>usr<span style="color: #CC0099;">/</span><span style="color: #990099; font-weight: bold;">local</span><span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span><span style="color: #000099;">bin</span><span style="color: #CC0099;">/</span>mysqladmin
<span style="color: #000099;">user</span> <span style="color: #CC0099;">=</span> shutdown
<span style="color: #000099;">password</span> <span style="color: #CC0099;">=</span> <span style="color: #008080;">123456</span>
<span style="color: #000099;">log</span> <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span>mysqld_multi.<span style="color: #000099;">log</span></pre></td></tr></table></div>

<p>然后把原来的 [mysqld] 改为 [mysqld1]<br />
在新增新的实例配置</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="mysql" style="font-family:monospace;"><span style="color: #FF00FF;">&#91;</span>mysqld2<span style="color: #FF00FF;">&#93;</span>
port <span style="color: #CC0099;">=</span> <span style="color: #008080;">3307</span>
socket <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>tmp<span style="color: #CC0099;">/</span>mysql3307.sock
datadir <span style="color: #CC0099;">=</span> <span style="color: #CC0099;">/</span>storage<span style="color: #CC0099;">/</span>mysql<span style="color: #CC0099;">/</span>data3307
............
............</pre></td></tr></table></div>

<p>然后把 mysqld_multi.server 做成启动服务</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="shell" style="font-family:monospace;">cp ./support-files/mysqld_multi.server /etc/rc.d/init.d/mysqld
chown root:root /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 3 mysqld on
chkconfig --level 5 mysqld on</pre></td></tr></table></div>

<p>启动和关闭全部mysql实例<br />
启动：service mysqld start<br />
关闭：service mysqld stop</p>
<p>对单台数据库的启动和关闭<br />
启动： service mysqld start 1<br />
关闭： service mysqld stop 1</p>
<p>也可以同时启动和关闭多个数据库实例<br />
启动： service mysqld start 1-2<br />
关闭： service mysqld stop 1-2</p>
<p>如果启动的时候提示出错信息：<br />
WARNING: my_print_defaults command not found.<br />
Please make sure you have this command available and<br />
in your path. The command is available from the latest<br />
MySQL distribution.<br />
ABORT: Can&#8217;t find command &#8216;my_print_defaults&#8217;.<br />
This command is available from the latest MySQL<br />
distribution. Please make sure you have the command<br />
in your PATH.</p>
<p>先添加<br />
export PATH=/usr/local/mysql/bin:$PATH<br />
然后在启动mysql</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/828.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>windows下php5无法加载部分扩展dll问题解决</title>
		<link>http://226617.cn/archives/621.htm</link>
		<comments>http://226617.cn/archives/621.htm#comments</comments>
		<pubDate>Tue, 26 May 2009 03:28:20 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[php相关]]></category>
		<category><![CDATA[windows相关]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[环境变量]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=621</guid>
		<description><![CDATA[在windows下开启php的扩展是靠php.ini里面extension部分控制的，但是有部分扩展比如php_curl.dll、php_mcrypt.dll等开启后会在启动的时候提示PHP startup: Unable to load dynamic library的错误，这是因为这部分扩展... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>在windows下开启php的扩展是靠php.ini里面extension部分控制的，但是有部分扩展比如php_curl.dll、php_mcrypt.dll等开启后会在启动的时候提示PHP startup: Unable to load dynamic library的错误，这是因为这部分扩展还依赖一些dll库才能运行，而这些dll就在php的根目录下，所以按照install.txt文档里面的建议就是把 php所在的目录加到系统环境变量里面。当然加完后记得重启下机器，也可用修改完成后，进入DOS命令提示符，输入：set PATH=C: ，关闭DOS窗口来刷新下系统环境变量。</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/621.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iis下面php getenv(&#8216;HTTP_X_FORWARDED_FOR&#8217;)取不到ip</title>
		<link>http://226617.cn/archives/576.htm</link>
		<comments>http://226617.cn/archives/576.htm#comments</comments>
		<pubDate>Thu, 16 Apr 2009 09:07:08 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[php相关]]></category>
		<category><![CDATA[windows相关]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=576</guid>
		<description><![CDATA[环境是win2003 iis6 php(isapi) 应用是个dz，最近在上了cdn后发现用户过来的ip都是squid服务器的地址，看了下dz的源代码 1 2 3 4 5 6 7 8 9 if&#40;getenv&#40;'HTTP_CLIENT_IP'&#41; &#38;&#38; strcasecmp&#40;getenv&#40;'HTTP_CLI... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>环境是win2003 iis6 php(isapi)<br />
应用是个dz，最近在上了cdn后发现用户过来的ip都是squid服务器的地址，看了下dz的源代码</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>对比了下另外一台linux的机器发现是可以取到的。<br />
于是用_SERVER["HTTP_X_FORWARDED_FOR"]试了试是可以取到用户ip的，难道在windows下面不能用getenv？<br />
最后略微修改了下dz的代码搞定了</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED_FOR&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED_FOR&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED_FOR&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">strcasecmp</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'unknown'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$onlineip</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/576.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>display_errors设置无效永远off故障一例</title>
		<link>http://226617.cn/archives/550.htm</link>
		<comments>http://226617.cn/archives/550.htm#comments</comments>
		<pubDate>Tue, 07 Apr 2009 14:23:19 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[php相关]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=550</guid>
		<description><![CDATA[就我这台跑博客的机器，nginx-0.7.37 + php 5.2.8(fastcgi)出现个极度诡异的现象，就是无论php.ini怎么设置display_errors，永远无错误信息显示，觉得不是我搞错文件或者其它问题，别的配置都有效，就... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>就我这台跑博客的机器，nginx-0.7.37 + php 5.2.8(fastcgi)出现个极度诡异的现象，就是无论php.ini怎么设置display_errors，永远无错误信息显示，觉得不是我搞错文件或者其它问题，别的配置都有效，就是display_errors 设置为on 进phpinfo一看还是off，昏倒，怎么最近老是碰到问题撒，只能log到文件看出错信息。同样的环境在另外一台机器确实好的<br />
最后检查来检查去发现php-fpm.conf里面还有个关于display_errors的设置改成<value name="display_errors">1</value>就搞定了</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/550.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP.ini配置文件中文</title>
		<link>http://226617.cn/archives/489.htm</link>
		<comments>http://226617.cn/archives/489.htm#comments</comments>
		<pubDate>Fri, 27 Mar 2009 15:00:19 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[php相关]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=489</guid>
		<description><![CDATA[;;;;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ; 默认情况下,PHP使用此配置文件安装 ; 此配置针对开发目的,并且*不是*针对生产环境 ; 基于一些安全方面的考虑,在你的网... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>;;;;;;;;;;;<br />
; 警告 ;<br />
;;;;;;;;;;;<br />
; 此配置文件是对于新安装的PHP的默认设置.<br />
; 默认情况下,PHP使用此配置文件安装<br />
; 此配置针对开发目的,并且*不是*针对生产环境<br />
; 基于一些安全方面的考虑,在你的网站上线之前,请考虑使用php.ini-recommended<br />
; 以及在线文档 <a href="http://php.net/manual/en/security.php">http://php.net/manual/en/security.php</a>.<br />
;;;;;;;;;;;;;;;;;;;<br />
; 关于 php.ini   ;<br />
;;;;;;;;;;;;;;;;;;;<br />
; 此文件控制了PHP行为的很多方面.  为了让PHP能够读取它<br />
; 必须命名为 &#8216;php.ini&#8217;.  PHP 在其当前工作目录,由PHPRC环境变量指定目录<br />
; 以及由编译时指定的目录(按此顺序)查找此文件<br />
; 在Windows环境下, 编译时目录是Windows目录.<br />
; 在命令行模式下查找php.ini的目录可以被-c参数覆盖.<br />
;<br />
; 此文件的语法非常简单.<br />
; 空行和由分号开始的行会被忽略(你可能已经猜到了).<br />
; 段的开头(例如 [Foo]) 同样会被悄悄忽略<br />
; 即使在将来他们可能会有其他作用.<br />
;<br />
; 使用以下语法来设定指令:<br />
; directive = value<br />
; 指令 = 值<br />
; 指令名称是 *大小写敏感* &#8211; foo=bar 和 FOO=bar 是不同的.<br />
;<br />
; 值可以是字符串,数值,PHP常量 (例如 E_ALL 和 M_PI),<br />
; INI 常量 (On, Off, True, False, Yes, No 和 None) 或者一个表达式<br />
; (例如 E_ALL &amp; ~E_NOTICE), 或者带引号的字串 (&#8220;foo&#8221;).<br />
;<br />
; 在INI文件中的表达式只能使用逻辑运算和圆括号:<br />
; |        逻辑或<br />
; &amp;       逻辑与<br />
; ~       逻辑非<br />
; !        取反<br />
;<br />
; 逻辑标志可以使用1,On,True或者Yes来打开.<br />
; 也可以使用0, Off, False 或者 No来关闭.<br />
;<br />
; 在等号后面不写任何内容代表了一个空字符串<br />
; 或者使用 None 关键词:<br />
;<br />
;  foo =         ; 将foo设置成一个空字串<br />
;  foo = none    ; 将foo设置成一个空字串<br />
;  foo = &#8220;none&#8221;  ; 将foo设置成字串 &#8216;none&#8217;<br />
;<br />
; 如果你在值中使用了常量, 并且这个常量属于一个动态加载的扩展模块<br />
; (不论是PHP扩展还是Zend扩展),<br />
; 那你只能在加载这些扩展 *之后* 使用这些常量.<br />
;<br />
;<br />
;;;;;;;;;;;;;;;;;;;<br />
; 关于这个文件  ;<br />
;;;;;;;;;;;;;;;;;;;<br />
; 在php.ini-dist 文件中所有的值都相当于内建的默认值<br />
; (就是如果没有使用php.ini, 或者如果你删除了这些行,<br />
; 就和内建的默认值一样).<br />
;;;;;;;;;;;;;;;;;;;;<br />
; 语言选项 ;<br />
;;;;;;;;;;;;;;;;;;;;</p>
<p>; 打开在Apache下的PHP脚本语言引擎<br />
engine = On</p>
<p>; 打开Zend Engine兼容模式(PHP 4.x)<br />
zend.ze1_compatibility_mode = Off</p>
<p>; 允许 &lt;? 标签.  否则,只有 &lt;?php 和 &lt;script&gt; 标签被认为是PHP脚本.<br />
; 注意: 尽可能避免在开发可重新发布的程序或者库的时候使用简略标签,或者在不受你控制的服务器下发布,<br />
; 因为简略标签可能不被目标服务器支持.为了可移植性, 可重新发布的代码, 请不要使用简略标签<br />
short_open_tag = On</p>
<p>; 使用ASP风格 &lt;% %&gt; 标签.<br />
asp_tags = Off</p>
<p>; 浮点数中数值的有效位数(浮点数精度).<br />
precision    =  12</p>
<p>; 强制2000年兼容 (可能引起不兼容浏览器的问题)<br />
y2k_compliance = On</p>
<p>; 输出缓冲允许在你发送了body内容之后发送header(包括 cookies)<br />
; 代价是稍稍减缓了PHP输出层<br />
; 你可以在运行时调用 output buffering 函数来打开此功能<br />
; 你也可以将此指令设置为On来对所有文件打开输出缓冲<br />
; 如果你想将这个缓冲区限制到特定大小 &#8211; 你可以使用最大的字节数来代替&#8217;On&#8217;,来作为这个指令的参数 (例如 output_buffering=4096).<br />
output_buffering = Off</p>
<p>; 你可以将所有你脚本输出的内容重定向到指定函数. <br />
; 例如, 如果你设置 output_handler 到 &#8220;mb_output_handler&#8221;,<br />
; 字符编码会被转换成为指定的编码..<br />
; 设置任何的输出处理句柄会自动打开输出缓冲.<br />
; 注意: 如果想编写可移植脚本就不要依赖此INI配置<br />
;       取而代之的是, 明确的使用 ob_start() 来设置输出处理句柄.<br />
;       使用此ini指令可能引起问题,除非你很清楚的理解脚本正在做什么.<br />
; 注意: 你不能同时使用 &#8220;mb_output_handler&#8221; 和 &#8220;ob_iconv_handler&#8221;<br />
;       并且你不能同时使用 &#8220;ob_gzhandler&#8221; 和 &#8220;zlib.output_compression&#8221;.<br />
; 注意: 如果使用zlib.output_handler指令开启zlib输出压缩, 该指令必须为空.<br />
;output_handler =</p>
<p>; 使用zlib库对输出进行压缩<br />
; 对此选项的有效值是 &#8216;off&#8217;, &#8216;on&#8217;, 或者字节数 (用来压缩的缓冲大小 , 默认是 4KB)<br />
; 注意: 结果的chunk大小可能由于压缩对象的大小而不同.<br />
;       PHP输出块的大小一般压缩之后每个大小时几百个字节.<br />
;       如果你希望藉由一个大块的堆大小来获取更好的性能, 需要额外的打开 output_buffering 选项.<br />
; 注意: 你必须使用 zlib.output_handler 来替代标准的<br />
;       output_handler, 否则输出可能会有问题.<br />
zlib.output_compression = Off<br />
;zlib.output_compression_level = -1</p>
<p>; 这里激活 zlib.output_compression 之后,你无法再指定额外的输出处理.<br />
; 这个设置和 output_handler 一样,但是处理顺序不同.<br />
;zlib.output_handler =</p>
<p>; 立即刷新告知 PHP 让输出层在每次输出块之后立刻自动刷新.<br />
; 这和每次调用print()或者echo()函数以及任何一种HTML块后调用flush()一样.<br />
; 打开此选项会严重导致性能下降,一般只有用于调试情况下才建议打开.<br />
implicit_flush = Off</p>
<p>; 如果反序列器找到一个可以作为示例的未定义类.未序列化的回调函数会被调用(使用未定义的类名作为参数),<br />
; 如果特定的函数未被定义或者如果此函数没有包含/实现丢失的类,则会发生一个警告.<br />
; 如果只有你真想要实现类似的回调函数,才设定此入口.<br />
unserialize_callback_func=</p>
<p>; 当浮点和双精度被序列化后,浮点号后由 serialize_precision 指定存储精确度的有效位数.<br />
; 默认值是当浮点数被反序列解码后,数值仍旧相同.<br />
serialize_precision = 100</p>
<p>; 是否打开强制通过引用传递参数给函数<br />
; 此方法被反对并且很有可能在未来版本的PHP/Zend中不再被支持.<br />
; 被孤立的指定的方法是参数应该在函数被声明的时候按照引用传入.<br />
; 你被鼓励来尝试上述方法并关闭此选项来确保你脚本在今后的新版本中仍旧可以正常工作 ( 每次你使用此特性的时候会受到一个警告<br />
; 并且参数会传值而不是传引用).<br />
allow_call_time_pass_reference = On</p>
<p>;<br />
; 安全模式<br />
;<br />
safe_mode = Off</p>
<p>; 默认情况下,安全模式在打开文件时,使用UID来比对检测.<br />
; 如果你只想使用GID做宽松的比对,<br />
; 打开 safe_mode_gid.<br />
safe_mode_gid = Off</p>
<p>; 当 safe_mode 被打开, 此目录下包含的文件和子文件夹的UID/GID 检测会被绕过.<br />
; (目录必须在 include_path 中存在或者必须在包含时使用全路径)<br />
safe_mode_include_dir =</p>
<p>; 当 safe_mode 被打开, 只有在 safe_mode_exec_dir 中定义的可执行文件能够通过exec函数组打开执行.<br />
safe_mode_exec_dir =</p>
<p>; 设定某些的环境变量可能成为潜在的安全隐患.<br />
; 此指令包含一个逗号分隔的前导列表.<br />
; 在安全模式中, 用户可能只能改变符合这里所给出前导字符的变量.<br />
; 默认情况下,用户只能改变以PHP_开头的变量(例如. PHP_FOO=BAR).<br />
;<br />
; 注意:  如果此指令为空, PHP会允许用户修改任何环境变量!<br />
safe_mode_allowed_env_vars = PHP_</p>
<p>; 此指令包含了一个用逗号分隔的环境变量列表, 用户无法通过 putenv() 函数来修改列表中的环境变量.<br />
; 这些变量即便已经在 safe_mode_allowed_env_vars 所设定的列表中,也会被被保护不允许修改.<br />
safe_mode_protected_env_vars = LD_LIBRARY_PATH</p>
<p>; 如果设置了open_basedir, 将会限制文件操作只能是此指令下的目录和子目录.<br />
; 此指令对于每目录或者每虚拟主机配置文件最有意义. 此指令* 不会 *受安全模式开或者关的影响.<br />
;open_basedir =</p>
<p>; 此指令允许你为了安全原因关闭指定的函数.<br />
; 它接受以逗号分隔的函数名的列表.<br />
; 此指令* 不会 *受安全模式开或者关的影响.<br />
disable_functions =</p>
<p>; 此指令允许你由于安全原因关闭指定的类.<br />
; 它接受以逗号分隔的类名的列表.<br />
; 此指令* 不会 *受安全模式开或者关的影响.<br />
disable_classes =</p>
<p>; 语法高亮模式的色彩. 任何在 &lt;span style=&#8221;color: ???????&#8221;&gt; 中可接受的值都可以使用.<br />
;highlight.string  = #DD0000<br />
;highlight.comment = #FF9900<br />
;highlight.keyword = #007700<br />
;highlight.bg      = #FFFFFF<br />
;highlight.default = #0000BB<br />
;highlight.html    = #000000</p>
<p>; 如果打开, 即便用户放弃了的请求也会被执行完成.<br />
; 在执行可能被用户打断或者浏览器超时所中断的请求时打开此选项.<br />
; ignore_user_abort = On</p>
<p>; 指定PHP使用的实际路径的缓冲. 对于PHP打开很多文件来处理很多文件操作的系统上,应该增加此值.<br />
; realpath_cache_size=16k</p>
<p>; 对于给定文件或者目录的缓冲真实路径信息的缓冲保留秒数. 对于很少修改文件的系统可以考虑增加此值.<br />
; realpath_cache_ttl=120</p>
<p>;<br />
; 其他<br />
;<br />
; 考虑到PHP可能被其所安装的服务器上暴露的事实(例如. 被web服务器作为头部信息的签名).<br />
; 任何情况下这虽然不是安全威胁, 仍有可能暴露在你的服务器上是否正在使用PHP.<br />
expose_php = On<br />
;;;;;;;;;;;;;;;;;;;<br />
; 资源限制 ;<br />
;;;;;;;;;;;;;;;;;;;</p>
<p>; 每个脚本最大执行秒数<br />
max_execution_time = 30<br />
; 每个脚本用来分析请求数据的最大时间<br />
max_input_time = 60<br />
; 最大输入变量的嵌套级别<br />
;max_input_nesting_level = 64<br />
; 每个脚本能够使用的最大内存数量 (128MB)<br />
memory_limit = 128M<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 错误处理和记录 ;<br />
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p>
<p>; 错误报告时一个位. 对每一个数值取或可以得到最终的报告级别<br />
; E_ALL             &#8211; 所有错误和警告 (不包含 E_STRICT)<br />
; E_ERROR           &#8211; 致命的运行时错误<br />
; E_RECOVERABLE_ERROR  &#8211; 几乎致命的运行时错误<br />
; E_WARNING         &#8211; 运行时警告 (非致命错误)<br />
; E_PARSE           &#8211; 编译时语法错误<br />
; E_NOTICE          &#8211; 运行时提醒 (这些警告常常由你代码中的bug导致, 但是也有可能是有意的行为 (例如, 使用一个未初始化的变量并依赖于其会被自动初始化成为一个空字符串的事实)<br />
; E_STRICT          &#8211; 运行时提醒, 打开后PHP会给出针对你代码的最易移植和最好向后兼容性的建议<br />
; E_CORE_ERROR      &#8211; PHP初始化启动时的致命错误<br />
; E_CORE_WARNING    &#8211; 在PHP初始化时发生的警告 (非致命错误)<br />
; E_COMPILE_ERROR   &#8211; 致命的编译时错误<br />
; E_COMPILE_WARNING &#8211; 编译时警告 (非致命)<br />
; E_USER_ERROR      &#8211; 用户产生的错误信息<br />
; E_USER_WARNING    &#8211; 用户产生的警告信息<br />
; E_USER_NOTICE     &#8211; 用户产生的提示信息<br />
;<br />
;例子:<br />
;<br />
;   &#8211; 显示所有错误, 除了提示以及代码标准警告以外<br />
;<br />
;error_reporting = E_ALL &amp; ~E_NOTICE<br />
;<br />
;   &#8211; 显示所有错误,除了提示以外<br />
;<br />
;error_reporting = E_ALL &amp; ~E_NOTICE | E_STRICT<br />
;<br />
;   &#8211; 只显示错误<br />
;<br />
;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR<br />
;<br />
;   &#8211; 显示出了提示以及代码标准警告之外的错误<br />
;<br />
error_reporting  =  E_ALL &amp; ~E_NOTICE</p>
<p>; 打印输出错误 (作为输出的一部分).  对于生产环境的网站来说,<br />
; 强烈建议你关闭此选项, 使用错误日志来替代 (详情参考下面内容). <br />
; 在一个生产环境下的web站点打开display_errors可能泄漏安全信息给最终用户, 例如web服务器的文件路径,你数据库的结构或者其他信息.<br />
;<br />
; display_errors可用的值:<br />
;<br />
; Off        &#8211; 不显示任何错误信息<br />
; stderr     &#8211; 将错误信息输出到STDERR (只有 CGI/CLI 格式下有效!)<br />
;<br />
;display_errors = &#8220;stderr&#8221;<br />
;<br />
; stdout (On) &#8211; 输出错误信息到STDOUT上<br />
;<br />
display_errors = On</p>
<p>; 即使 display_errors 打开后,PHP启动序列中发生的错误也不会显示.<br />
; 强烈建议你保持 display_startup_errors 关闭状态, 除非在排错<br />
display_startup_errors = Off</p>
<p>; 将错误输入到日志文件 (服务器指定的log,stderr或者error_log (以下指定))<br />
; 和上面提到的一样, 强烈建议你在生产环境的web站点下使用错误日志来代替错误显示.<br />
log_errors = Off</p>
<p>; 设定log_errors的最大长度. 在 error_log 关于源的信息也计算在内.<br />
; 默认是1024, 设置为0可以不限制任何最大长度.<br />
log_errors_max_len = 1024</p>
<p>; 不要记录重复的信息.必须出现在同样文件的相同行之中的才被认为是重复信息,除非 ignore_repeated_source 被设为 true.<br />
ignore_repeated_errors = Off</p>
<p>; 当忽略重复消息时忽略消息的来源. 当此设置打开后,不再记录来自不同文件或者不同行的相同消息.<br />
ignore_repeated_source = Off</p>
<p>; 如果此选项被设置为 Off, 那么内存泄漏不会被显示 (不论在stdout还是在日志中).<br />
; 此项仅在debug编译模式下有效, 并且错误报告需要包含 E_WARNING<br />
report_memleaks = On</p>
<p>;report_zend_debug = 0</p>
<p>; 在$php_errormsg中保存最后一次错误/警告消息 (逻辑值).<br />
track_errors = Off</p>
<p>; 关闭在错误信息中所包含的HTML标签.<br />
; 注意: 永远不要再生产环境中使用此特性.<br />
;html_errors = Off</p>
<p>; 如果html_errors 设置为On, 则PHP产生可点击的错误信息,点击后会跳转到描述此错误或者引起此错误的函数具体信息的页面.<br />
; 你可以从 <a href="http://www.php.net/docs.php">http://www.php.net/docs.php</a> 下载一份PHP手册的副本<br />
; 并且将 docref_root指向你放置本地拷贝的以&#8217;/'开头的.<br />
; 你同时必须指定文件文件的包含点的扩展名.<br />
; 注意: 永远不要再生产环境中使用此特性.<br />
;docref_root = &#8220;/phpmanual/&#8221;<br />
;docref_ext = .html</p>
<p>; 在输出的错误信息前加上的字符串.<br />
;error_prepend_string = &#8220;&lt;font color=#ff0000&gt;&#8221;</p>
<p>; 在输出的错误信息之后加上的字符串.<br />
;error_append_string = &#8220;&lt;/font&gt;&#8221;</p>
<p>; 将错误记录到指定文件.<br />
;error_log = filename</p>
<p>; 将错误记录到 syslog (NT系统上的Event Log在Windows 95下不可用).<br />
;error_log = syslog<br />
;;;;;;;;;;;;;;;;;<br />
; 文件处理 ;<br />
;;;;;;;;;;;;;;;;;<br />
;<br />
; 注意 &#8211; track_vars 在PHP 4.0.3 中总是打开的</p>
<p>; 在PHP产生的URL中用来分隔参数的符号.<br />
; 默认是 &#8220;&amp;&#8221;.<br />
;arg_separator.output = &#8220;&amp;amp;&#8221;</p>
<p>; PHP用来将URL分割输入到变量中的分隔符.<br />
; 默认是 &#8220;&amp;&#8221;.<br />
; 注意: 所有包含在指令内的字符都会被认为是分隔符!<br />
;arg_separator.input = &#8220;;&amp;&#8221;</p>
<p>; 此指令描述了PHP注册GET, POST, Cookie, 环境 和 内置变量的顺序  (各自使用G, P, C, E 和 S , 一般使用 EGPCS 或 GPC).  注册使用从左往右的顺序, 新的值会覆盖旧的值.<br />
variables_order = &#8220;EGPCS&#8221;</p>
<p>; 是否将EGPCS变量注册成为全局变量.<br />
; 如果你不希望由于用户数据而导致你脚本的全局变量变得凌乱,你需要关闭此选项<br />
; 这个一般随着 track_vars 打开 &#8211; 在这种情况下你能够通过$HTTP_*_VARS[]存取所有的GPC变量.<br />
;<br />
; 你应该努力写好脚本这样就不必打开register_globals<br />
; 如果代码不是经过详细的斟酌,那将变量作为全局使用可能很容易导致潜在的安全漏洞.<br />
register_globals = Off</p>
<p>; 是否注册老形式的输入数组, HTTP_GET_VARS 和相关数组<br />
; 如果你不使用他们,建议为了提高性能关闭他们.<br />
register_long_arrays = On</p>
<p>; 此指令让PHP确认是否申明 argv&amp;argc 变量 (这些变量会包含GET信息).<br />
; 如果你不使用这些变量,为了提升性能应该关闭此选项.<br />
register_argc_argv = On</p>
<p>; 当打开此项, SERVER 和 ENV 变量将在第一次被使用时而不是脚本一开始时创建(运行时)<br />
; 如果这些变量在脚本中没有被使用过, 打开此项会增加一点性能.<br />
; 为了使此指令有效,PHP指令 register_globals, register_long_arrays,<br />
; 以及 register_argc_argv 必须被关闭.<br />
auto_globals_jit = On</p>
<p>; PHP可以接受的最大的POST数据大小.<br />
post_max_size = 8M</p>
<p>; Magic quotes<br />
;</p>
<p>; 针对GET/POST/Cookie数据打开Magic quotes.<br />
magic_quotes_gpc = On</p>
<p>; 针对实时产生的数据打开Magic quotes, 例如从SQL获取的数据, 从exec()返回的数据等等.<br />
magic_quotes_runtime = Off</p>
<p>; 使用 Sybase 风格的 magic quotes (使用&#8221;来引导&#8217;替代\&#8217;).<br />
magic_quotes_sybase = Off</p>
<p>; 在任何PHP文档之前或之后自动增加文件.<br />
auto_prepend_file =<br />
auto_append_file =</p>
<p>; 和 4.0b4一样, PHP 总是使用默认在头 Content-type: 的编码输出字符.<br />
; 将其设置为空可以禁用发送字符集.<br />
;<br />
; PHP内建默认为text/html<br />
default_mimetype = &#8220;text/html&#8221;<br />
;default_charset = &#8220;iso-8859-1&#8243;</p>
<p>; 总是填充 $HTTP_RAW_POST_DATA 变量.<br />
;always_populate_raw_post_data = On<br />
;;;;;;;;;;;;;;;;;;;;;;;;;<br />
; 路径和目录 ;<br />
;;;;;;;;;;;;;;;;;;;;;;;;;</p>
<p>; UNIX: &#8220;/path1:/path2&#8243;<br />
;include_path = &#8220;.:/php/includes&#8221;<br />
;<br />
; Windows: &#8220;\path1;\path2&#8243;<br />
;include_path = &#8220;.;c:\php\includes&#8221;</p>
<p>; PHP页面的根路径, 只有非空时有效.<br />
; 如果PHP没有使用FORCE_REDIRECT来编译, 如果你将php作为CGI运行在任何web服务器下(除了IIS)的话,你必须设置doc_root<br />
; 针对安全问题查看文档.  一种替代方案是使用下面的cgi.force_redirect<br />
doc_root =</p>
<p>; PHP使用/~username打开脚本的目录,非空时才有效.<br />
user_dir =</p>
<p>; 可加载的扩展(模块)的目录位置.<br />
extension_dir = &#8220;./&#8221;</p>
<p>; 是否启用 dl() 函数.  dl() 函数无法正常的在多线程服务下运行, 例如IIS或者Zeus, 并在在这些服务软件下会自动禁用.<br />
enable_dl = On</p>
<p>; 在绝大多数web服务器下,cgi.force_redirect 对于提供安全执行PHP作为CGI来说是很有必要的.<br />
; 没有配置的情况下,PHP会默认打开此项.<br />
; 你可以在这里关闭此项并且自己承担风险<br />
; **你可以在IIS安全的关闭此项,事实上,你必须关闭此项.**<br />
; cgi.force_redirect = 1</p>
<p>; 如果 cgi.nph 被打开,就会强制CGI在每个请求时发送Status: 200.<br />
; cgi.nph = 1</p>
<p>; 如果cgi.force_redirect被打开,并且你没有在Apache或者Netscape(iPlanet) web服务器下运行,<br />
; 你也许需要设置一个环境变量名让PHP来查找让其可以获取后继续执行. 设置此变量可能引起安全问题, 在设置之前请先了解可能引起的后果.<br />
; cgi.redirect_status_env = ;</p>
<p>; cgi.fix_pathinfo 为CGI提供 *真实* PATH_INFO/PATH_TRANSLATED 支持. <br />
; PHP的预处理行为是设置 PATH_TRANSLATED 到 SCRIPT_FILENAME, 并且不去猜测 PATH_INFO 是什么.<br />
; 想获取关于 PATH_INFO 更多的信息, 查看 cgi 规范. <br />
; 将此值设置为1会引起PHP CGI修正它的路径来符合规范.<br />
; 设置为0会引起PHP类似前面的行为. 默认是1. 你应该修正你的脚本来使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED.<br />
; cgi.fix_pathinfo=0</p>
<p>; 在IIS下的FastCGI (在基于 WINNT 的操作系统下) 支持莫让呼叫客户端的安全令牌的能力.<br />
; 这使得IIS能够定义其下运行的安全上下文.<br />
; 在Apache下的mod_fastcgi 目前不支持此特性 (03/17/2002)<br />
; 如果运行在IIS下设置为1. 默认是0.<br />
; fastcgi.impersonate = 1;</p>
<p>; 关闭通过 FastCGI 连接的日志<br />
; fastcgi.logging = 0</p>
<p>; cgi.rfc2616_headers 配置选项告知 PHP 当发送HTTP响应代码时使用什么类型的头<br />
; 如果设置为0,PHP发送被Apache支持的 Status: 头信息.<br />
; 当设置为1, PHP会发送 RFC2616 兼容的头信息.<br />
; 默认为0.<br />
; cgi.rfc2616_headers = 0<br />
;;;;;;;;;;;;;;;;<br />
; 文件上传 ;<br />
;;;;;;;;;;;;;;;;</p>
<p>; 是否允许HTTP文件上传.<br />
file_uploads = On</p>
<p>; 对于HTTP上传文件的临时文件目录 (如果没有指定则会使用系统默认).<br />
;upload_tmp_dir =</p>
<p>; 允许上传的最大文件大小.<br />
upload_max_filesize = 2M<br />
;;;;;;;;;;;;;;;;;;<br />
; Fopen 包装 ;<br />
;;;;;;;;;;;;;;;;;;</p>
<p>; 是否允许将URL作为文件 (例如 http:// 或者 ftp://) .<br />
allow_url_fopen = On</p>
<p>; 是否允许 include/require 将URL作为文件 (例如 http:// 或者 ftp://) .<br />
allow_url_include = Off</p>
<p>; 定义匿名ftp密码 (你的电子邮件地址)<br />
;from=&#8221;<a href="mailto:john@doe.com">john@doe.com</a>&#8221;</p>
<p>; 定义 User-Agent 字符串<br />
; user_agent=&#8221;PHP&#8221;</p>
<p>; 定义基于流的socket接口的超时时间 (秒)<br />
default_socket_timeout = 60</p>
<p>; 如果你的脚本必须处理从 Macintosh 系统来的文件,<br />
; 或者你运行在一台Mac并且需要从unix或者win32系统上处理文件,<br />
; 设置此标志会引起PHP自动检测这些文件的EOL字符,这样fgets() 和 file() 就可以不用管文件的来源而直接处理了.<br />
; auto_detect_line_endings = Off<br />
;;;;;;;;;;;;;;;;;;;;;;<br />
; 动态扩展 ;<br />
;;;;;;;;;;;;;;;;;;;;;;<br />
;<br />
; 如果你希望扩展自动加载, 使用下列语法:<br />
;<br />
;   extension=modulename.extension<br />
;<br />
; 例如,在Windows系统上:<br />
;<br />
;   extension=msql.dll<br />
;<br />
; &#8230; 或者在 UNIX 下:<br />
;<br />
;   extension=msql.so<br />
;<br />
; 注意: 这里应该只是模块的名字;<br />
; 这里不需要模块的目录信息.<br />
; 使用上面的 extension_dir 指令来指定扩展的位置.<br />
; Windows Extensions<br />
; 注意:已经内建了ODBC支持,所以不需要针对ODBC的dll.<br />
; 注意:许多DLL文件位于 extensions/ (PHP 4) 或者 ext/ (PHP 5)目录中,和分割的PECL DLL下载在一起 (PHP 5).<br />
; 确定设置了正确的 extension_dir 指令.</p>
<p>;extension=php_bz2.dll<br />
;extension=php_curl.dll<br />
;extension=php_dba.dll<br />
;extension=php_dbase.dll<br />
;extension=php_exif.dll<br />
;extension=php_fdf.dll<br />
;extension=php_gd2.dll<br />
;extension=php_gettext.dll<br />
;extension=php_gmp.dll<br />
;extension=php_ifx.dll<br />
;extension=php_imap.dll<br />
;extension=php_interbase.dll<br />
;extension=php_ldap.dll<br />
;extension=php_mbstring.dll<br />
;extension=php_mcrypt.dll<br />
;extension=php_mhash.dll<br />
;extension=php_mime_magic.dll<br />
;extension=php_ming.dll<br />
;extension=php_msql.dll<br />
;extension=php_mssql.dll<br />
;extension=php_mysql.dll<br />
;extension=php_mysqli.dll<br />
;extension=php_oci8.dll<br />
;extension=php_openssl.dll<br />
;extension=php_pdo.dll<br />
;extension=php_pdo_firebird.dll<br />
;extension=php_pdo_mssql.dll<br />
;extension=php_pdo_mysql.dll<br />
;extension=php_pdo_oci.dll<br />
;extension=php_pdo_oci8.dll<br />
;extension=php_pdo_odbc.dll<br />
;extension=php_pdo_pgsql.dll<br />
;extension=php_pdo_sqlite.dll<br />
;extension=php_pgsql.dll<br />
;extension=php_pspell.dll<br />
;extension=php_shmop.dll<br />
;extension=php_snmp.dll<br />
;extension=php_soap.dll<br />
;extension=php_sockets.dll<br />
;extension=php_sqlite.dll<br />
;extension=php_sybase_ct.dll<br />
;extension=php_tidy.dll<br />
;extension=php_xmlrpc.dll<br />
;extension=php_xsl.dll<br />
;extension=php_zip.dll</p>
<p>;;;;;;;;;;;;;;;;;;;<br />
; 模块设置 ;<br />
;;;;;;;;;;;;;;;;;;;</p>
<p>[Date]<br />
; 定义date函数使用的默认时区<br />
;date.timezone =</p>
<p>;date.default_latitude = 31.7667<br />
;date.default_longitude = 35.2333</p>
<p>;date.sunrise_zenith = 90.583333<br />
;date.sunset_zenith = 90.583333</p>
<p>[filter]<br />
;filter.default = unsafe_raw<br />
;filter.default_flags =</p>
<p>[iconv]<br />
;iconv.input_encoding = ISO-8859-1<br />
;iconv.internal_encoding = ISO-8859-1<br />
;iconv.output_encoding = ISO-8859-1</p>
<p>[sqlite]<br />
;sqlite.assoc_case = 0</p>
<p>[xmlrpc]<br />
;xmlrpc_error_number = 0<br />
;xmlrpc_errors = 0</p>
<p>[Pcre]<br />
;PCRE 库反响追踪限制.<br />
;pcre.backtrack_limit=100000</p>
<p>;PCRE 库递归限制.<br />
;请注意如果你设置此项到一个很高的值, 你可能耗尽所有的可用的进程堆并且最终弄宕PHP(由于到达了操作系统强制的堆大小的限制).<br />
;pcre.recursion_limit=100000</p>
<p>[Syslog]<br />
; 是否定义不同的syslog变量 (例如. $LOG_PID,<br />
; $LOG_CRON, 等等.).  关闭此选项对性能有益.<br />
; 在运行时, 你可以调用 define_syslog_variables() 函数来定义这些变量.<br />
define_syslog_variables  = Off</p>
<p>[mail function]<br />
; 针对Win32.<br />
SMTP = localhost<br />
smtp_port = 25</p>
<p>; 针对Win32.<br />
;sendmail_from = <a href="mailto:me@example.com">me@example.com</a></p>
<p>; 针对Unix.  可以支持参数 (默认: &#8220;sendmail -t -i&#8221;).<br />
;sendmail_path =</p>
<p>; 强制额外的指定的参数被作为扩展参数传送给sendmail执行文件.<br />
; 这些参数总是替代mail()函数的第五个参数值, 甚至是在安全模式内.<br />
;mail.force_extra_parameters =</p>
<p>[SQL]<br />
sql.safe_mode = Off</p>
<p>[ODBC]<br />
;odbc.default_db    =  目前无效<br />
;odbc.default_user  =  目前无效<br />
;odbc.default_pw    =  目前无效</p>
<p>; 允许或阻止持久连接.<br />
odbc.allow_persistent = On</p>
<p>; 在重用前检查连接是否可用.<br />
odbc.check_persistent = On</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
odbc.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
odbc.max_links = -1</p>
<p>; 长字段处理.  返回变量的字节数.  0 意味着略过.<br />
odbc.defaultlrl = 4096</p>
<p>; 二进制数据处理. 0 意味着略过, 1按照实际返回, 2 转换到字符.<br />
; 查看 odbc_binmode 和 odbc_longreadlen 的文档来获取针对 uodbc.defaultlrl 和 uodbc.defaultbinmode的解释<br />
odbc.defaultbinmode = 1</p>
<p>[MySQL]<br />
; 允许或阻止持久连接.<br />
mysql.allow_persistent = On</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
mysql.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
mysql.max_links = -1</p>
<p>; mysql_connect()默认的端口号.  如果没有设置, mysql_connect() 会使用 $MYSQL_TCP_PORT<br />
; 或者 位于/etc/services的 mysql-tcp 入口或者编译时定义的MYSQL_PORT 值(按照此顺序查找).<br />
; Win32 只会查找MYSQL_PORT值.<br />
mysql.default_port =</p>
<p>; 对于本地MySQL连接的默认socket名称. 如果为空, 则使用MySQL内建默认值.<br />
mysql.default_socket =</p>
<p>; mysql_connect() 的默认host值(在安全模式中不会生效).<br />
mysql.default_host =</p>
<p>; mysql_connect() 的默认user值(在安全模式中不会生效).<br />
mysql.default_user =</p>
<p>; mysql_connect() 的默认password值(在安全模式中不会生效).<br />
; 注意在此文件中保存密码一般来说是 *糟糕* 的主义.<br />
; *任何* 使用PHP的用户可以执行 &#8216;echo get_cfg_var(&#8220;mysql.default_password&#8221;)<br />
; 并且获取到此密码! 而且理所当然, 任何有对此文件读权限的用户都可以获取到此密码.<br />
mysql.default_password =</p>
<p>; 连接超时的最大时间 (秒) , -1 意味着没有限制.<br />
mysql.connect_timeout = 60</p>
<p>; 追踪模式. 当 trace_mode 被打开 (=On), table/index 扫描的警告和SQL错误会被显示出来.<br />
mysql.trace_mode = Off</p>
<p>[MySQLi]</p>
<p>; 最大连接数.  -1 意味着没有限制.<br />
mysqli.max_links = -1</p>
<p>; mysqli_connect()默认的端口号.  如果没有设置, mysql_connect() 会使用 $MYSQL_TCP_PORT<br />
; 或者 位于/etc/services的 mysql-tcp 入口或者编译时定义的MYSQL_PORT 值(按照此顺序查找).<br />
; Win32 只会查找MYSQL_PORT值.<br />
mysqli.default_port = 3306</p>
<p>; 对于本地MySQL连接的默认socket名称. 如果为空, 则使用MySQL内建默认值.<br />
mysqli.default_socket =</p>
<p>; mysqli_connect() 的默认host值(在安全模式中不会生效).<br />
mysqli.default_host =</p>
<p>; mysqli_connect() 的默认user值(在安全模式中不会生效).<br />
mysqli.default_user =</p>
<p>; mysqli_connect() 的默认password值(在安全模式中不会生效).<br />
; 注意在此文件中保存密码一般来说是 *糟糕* 的主义.<br />
; *任何* 使用PHP的用户可以执行 &#8216;echo get_cfg_var(&#8220;mysqli.default_password&#8221;)<br />
; 并且获取到此密码! 而且理所当然, 任何有对此文件读权限的用户都可以获取到此密码.<br />
mysqli.default_pw =</p>
<p>; 允许或阻止持久连接.<br />
mysqli.reconnect = Off</p>
<p>[mSQL]<br />
; 允许或阻止持久连接.<br />
msql.allow_persistent = On</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
msql.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
msql.max_links = -1</p>
<p>[OCI8]<br />
; 打开使用外部认证的授权连接 (OCI_SYSOPER, OCI_SYSDBA)<br />
;oci8.privileged_connect = Off</p>
<p>; 连接: 每个进程的持久OCI8连接的最大数, -1 意味着没有限制.<br />
;oci8.max_persistent = -1</p>
<p>; 连接: 一个进程允许保持一个空闲持久连接的最大秒数.<br />
; -1意味着空闲持久连接会永远被保持.<br />
;oci8.persistent_timeout = -1</p>
<p>; 连接: 当oci_pconnect() 检测一个连接是否有效时每次发起ping之间必须通过的秒数.<br />
; 当设置为0后, 每个oci_pconnect() 会发起一个ping. Using -1 完全关闭ping.<br />
;oci8.ping_interval = 60</p>
<p>; 调优: 此选项打开声明缓冲(statement cache), 并且指定缓冲多少声明. 使用0关闭声明缓冲.<br />
;oci8.statement_cache_size = 20</p>
<p>; 调优: 打开声明预取(statement prefetch) 并且设置自动在声明执行后被取到行的数量.<br />
;oci8.default_prefetch = 10</p>
<p>; 兼容性: 设置为On 意味着 oci_close() 不会关闭 oci_connect() 和 oci_new_connect() 的连接.<br />
;oci8.old_oci_close_semantics = Off</p>
<p>[PostgresSQL]<br />
; 允许或阻止持久连接.<br />
pgsql.allow_persistent = On</p>
<p>; 总是在 pg_pconnect() 时检测断开的持久连接.<br />
; 自动重置特性会引起一点开销.<br />
pgsql.auto_reset_persistent = Off</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
pgsql.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
pgsql.max_links = -1</p>
<p>; 是否忽略 PostgreSQL 后端通告消息.<br />
; 通告消息记录会需要一点开销.<br />
pgsql.ignore_notice = 0</p>
<p>; 是否记录 PostgreSQL 后端通告消息.<br />
; 除非 pgsql.ignore_notice=0, 否则模块无法记录通告消息<br />
pgsql.log_notice = 0</p>
<p>[Sybase]<br />
; 允许或阻止持久连接.<br />
sybase.allow_persistent = On</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
sybase.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
sybase.max_links = -1</p>
<p>;sybase.interface_file = &#8220;/usr/sybase/interfaces&#8221;</p>
<p>; 显示出的消息最小严重程度.<br />
sybase.min_error_severity = 10</p>
<p>; 显示出的消息最小严重程度.<br />
sybase.min_message_severity = 10</p>
<p>; 兼容老版本PHP 3.0的模式.<br />
; 如果设为 on, 会引起 PHP 自动绑定结果记录的类型到Sybase的类型,而不是将他们全部按照字符串处理.<br />
; 此兼容模式可能不会永久存在, 所以最好尝试在你代码中需要的地方作出必要的修改, 然后关闭此选项.<br />
sybase.compatability_mode = Off</p>
<p>[Sybase-CT]<br />
; 允许或阻止持久连接.<br />
sybct.allow_persistent = On</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
sybct.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
sybct.max_links = -1</p>
<p>; 显示出的错误最小严重程度.<br />
sybct.min_server_severity = 10</p>
<p>; 显示出的消息最小严重程度.<br />
sybct.min_client_severity = 10</p>
<p>[bcmath]<br />
; 所有bcmath函数的小数位数<br />
bcmath.scale = 0</p>
<p>[browscap]<br />
;browscap = extra/browscap.ini</p>
<p>[Informix]<br />
; 对于 ifx_connect() 的默认host (不会在安全模式被应用).<br />
ifx.default_host =</p>
<p>; 对于 ifx_connect() 的默认user (不会在安全模式被应用).<br />
ifx.default_user =</p>
<p>; 对于 ifx_connect() 的默认password (不会在安全模式被应用).<br />
ifx.default_password =</p>
<p>; 允许或阻止持久连接.<br />
ifx.allow_persistent = On</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
ifx.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
ifx.max_links = -1</p>
<p>; 如果设为 on, select 声明返回 text 段的内容而不是它的id.<br />
ifx.textasvarchar = 0</p>
<p>; 如果设为 on, select 声明返回 byte 段的内容而不是它的id.<br />
ifx.byteasvarchar = 0</p>
<p>; 固定长度字符列的尾部空格会被截去.  可能对 Informix SE 用户有帮助.<br />
ifx.charasvarchar = 0</p>
<p>; 如果设为 on, text 和 byte 段会被dump到一个文件而不是在内存中保留它们.<br />
ifx.blobinfile = 0</p>
<p>; NULL会被作为一个空字符串返回, 除非被设为1. 如果设为1, NULL会被作为字符串&#8217;NULL&#8217;返回.<br />
ifx.nullformat = 0</p>
<p>[Session]<br />
; 用来存储/获取数据的处理方法.<br />
session.save_handler = files</p>
<p>; 传送到save_handler的参数.  在使用文件的情况下, 这里是数据文件被保存的路径.<br />
; 注意: Windows 用户必须改变此值来使用PHP的会话函数.<br />
;<br />
; 和在 4.0.1一样, 你可以定义如下路径:<br />
;<br />
;     session.save_path = &#8220;N;/path&#8221;<br />
;<br />
; 这里的 N 是一个整数.  使用此参数会在目录内建立一个N层深度的子目录用来保存session文件,<br />
; 而不是将所有session文件保存在同一个/path目录内. <br />
; 这对你或当你的操作系统在一个目录内保存太多文件时出现问题很有帮助.<br />
; 并且对于处理大量session的服务器提供更高的效率.<br />
;<br />
; 注意 1: PHP不会自动创建目录结构. 你可以使用在ext/session目录内的脚本来创建目录结构.<br />
; 注意 2: 如果你选择使用子目录来保存session,请检查下面关于垃圾回收的配置段<br />
;<br />
; 文件存储模块默认使用600模式来创建文件,在使用中你可以改变此选项<br />
;<br />
;     session.save_path = &#8220;N;MODE;/path&#8221;<br />
;<br />
; 这里的MODE由8进制来表示. 注意这里不会覆盖进程的umask.<br />
;session.save_path = &#8220;/tmp&#8221;</p>
<p>; 是否使用cookie.<br />
session.use_cookies = 1</p>
<p>;session.cookie_secure =</p>
<p>; 这个选项允许管理员去保护那些在URL中传送session id的用户免于被攻击<br />
; 默认是 0.<br />
; session.use_only_cookies = 1</p>
<p>; session的名称 (作为cookie名称来使用).<br />
session.name = PHPSESSID</p>
<p>; 在请求开始的时候初始化session.<br />
session.auto_start = 0</p>
<p>; cookie的生存秒数,或者如果为0就直到浏览器重启.<br />
session.cookie_lifetime = 0</p>
<p>; cookie有效的路径.<br />
session.cookie_path = /</p>
<p>; cookie有效的域名.<br />
session.cookie_domain =</p>
<p>; 是否将httpOnly标志增加到cookie上, 增加后则cookie无法被浏览器的脚本语言(例如JavaScript)存取.<br />
session.cookie_httponly =</p>
<p>; 用于序列化数据的处理器. php是标准的PHP序列化器.<br />
session.serialize_handler = php</p>
<p>; 定义&#8217;垃圾回收&#8217;进程在每次session初始化时开始的比例.<br />
; 比例由 gc_probability/gc_divisor来得出,<br />
; 例如. 1/100 意味着在每次请求时有1%的机会启动&#8217;垃圾回收&#8217;进程.</p>
<p>session.gc_probability = 1<br />
session.gc_divisor     = 100</p>
<p>; 在经过以下秒数之后, 存储的数据会被认为是&#8217;垃圾&#8217;并且被垃圾回收进程清理掉.<br />
session.gc_maxlifetime = 1440</p>
<p>; 注意: 如果你使用子目录选项来保存session文件<br />
;       (查看在上面的session.save_path), 那么垃圾回收就 *不会* 自动发生.<br />
;       你需要通过一个shell脚本,cron或者其他方法来自行处理垃圾回收.<br />
;       例如, 下面的脚本相当于将session.gc_maxlifetime设置为 1440 (1440 秒 = 24 分钟):<br />
;          cd /path/to/sessions; find -cmin +24 | xargs rm</p>
<p>; PHP 4.2 和更早版本有一个未公开的 特性/bug , 此特性允许你在全局初始化一个session变量,即便 register_globals 已经被关闭.<br />
; 如果此特性被使用,PHP 4.3 和更早版本会警告你.<br />
; 你可以关闭此特性并且隔离此警告. 这时候,如果打开bug_compat_42,那此警告只是被显示出来.</p>
<p>session.bug_compat_42 = 1<br />
session.bug_compat_warn = 1</p>
<p>; 检查HTTP Referer来防止带有id的外部URL.<br />
; HTTP_REFERER 必须包含从session来的这个字段才会被认为是合法的.<br />
session.referer_check =</p>
<p>; 从此文件读取多少字节.<br />
session.entropy_length = 0</p>
<p>; 在这里指定创建session id.<br />
session.entropy_file =</p>
<p>;session.entropy_length = 16</p>
<p>;session.entropy_file = /dev/urandom</p>
<p>; 设置为 {nocache,private,public,} 来决定HTTP缓冲的类型<br />
; 留空则防止发送 anti-caching 头.<br />
session.cache_limiter = nocache</p>
<p>; 文档在n分钟之后过期.<br />
session.cache_expire = 180</p>
<p>; trans sid 支持默认关闭.<br />
; 使用 trans sid 可能让你的用户承担安全风险.<br />
; 使用此项必须小心.<br />
; &#8211; 用户也许通过email/irc/其他途径发送包含有效的session ID的URL给其他人.<br />
; &#8211; 包含有效session ID的URL可能被存放在容易被公共存取的电脑上.<br />
; &#8211; 用户可能通过在浏览器历史记录或者收藏夹里面的包含相同的session ID的URL来访问你的站点.<br />
session.use_trans_sid = 0</p>
<p>; 选择hash方法<br />
; 0: MD5   (128 bits)<br />
; 1: SHA-1 (160 bits)<br />
session.hash_function = 0</p>
<p>; 当转换二进制hash数据到可读形式时,每个字符保存时有几位.<br />
;<br />
; 4 bits: 0-9, a-f<br />
; 5 bits: 0-9, a-v<br />
; 6 bits: 0-9, a-z, A-Z, &#8220;-&#8221;, &#8220;,&#8221;<br />
session.hash_bits_per_character = 4</p>
<p>; URL rewriter会在已经定义的一组HTML标签内查找URL.<br />
; form/fieldset 是特殊字符; 如果你在这里包含他们, rewriter会增加一个包含信息的隐藏&lt;input&gt;字段否则就是在URL中附加信息.<br />
; 如果你你想遵守XHTML, 删除form的入口.<br />
; 注意 所有合法的入口都需要一个&#8221;=&#8221;符号, 甚至是没有任何值的.<br />
url_rewriter.tags = &#8220;a=href,area=href,frame=src,input=src,form=,fieldset=&#8221;</p>
<p>[MSSQL]<br />
; 允许或阻止持久连接.<br />
mssql.allow_persistent = On</p>
<p>; 持久连接的最大数目.  -1 意味着没有限制.<br />
mssql.max_persistent = -1</p>
<p>; 最大连接数 (持久 + 非持久).  -1 意味着没有限制.<br />
mssql.max_links = -1</p>
<p>; 显示出的错误最小严重程度.<br />
mssql.min_error_severity = 10</p>
<p>; 显示出的消息最小严重程度.<br />
mssql.min_message_severity = 10</p>
<p>; PHP 3.0 老版本的兼容模式.<br />
mssql.compatability_mode = Off</p>
<p>; 连接超时<br />
;mssql.connect_timeout = 5</p>
<p>; 查询超时<br />
;mssql.timeout = 60</p>
<p>; 有效范围 0 &#8211; 2147483647.  默认 = 4096.<br />
;mssql.textlimit = 4096</p>
<p>; 有效范围 0 &#8211; 2147483647.  默认 = 4096.<br />
;mssql.textsize = 4096</p>
<p>; 每批记录的数量限制.  0 = 所有记录在一批内.<br />
;mssql.batchsize = 0</p>
<p>; 指定 datetime 和 datetim4 栏如何返回<br />
; On =&gt; 返回数据转换到SQL服务器设置的格式<br />
; Off =&gt; 使用 YYYY-MM-DD hh:mm:ss 返回<br />
;mssql.datetimeconvert = On</p>
<p>; 当连接到服务器时使用NT验证<br />
mssql.secure_connection = Off</p>
<p>; 指定最大进程数. -1 = 库默认<br />
; msdlib 默认 25<br />
; FreeTDS 默认 4096<br />
;mssql.max_procs = -1</p>
<p>; 指定客户端字符集.<br />
; 如果为空或者没有指定,客户端字符集将会使用freetds.conf的配置<br />
; 只有和FreeTDS编译时会被使用<br />
;mssql.charset = &#8220;ISO-8859-1&#8243;</p>
<p>[Assertion]<br />
; 断言(expr); 默认打开.<br />
;assert.active = On</p>
<p>; 对于每个失败断言发起一个PHP警告.<br />
;assert.warning = On</p>
<p>; 默认不要保释.<br />
;assert.bail = Off</p>
<p>; 如果断言失败则调用用户自定义函数.<br />
;assert.callback = 0</p>
<p>; 使用当前 error_reporting() Eval一个表达式.  如果你想要在eval()附近error_reporting(0) ,那设置为true.<br />
;assert.quiet_eval = 0</p>
<p>[COM]<br />
; 包含GUID,IID或者TypeLibs的文件的文件名的文件的路径<br />
;com.typelib_file =<br />
; 允许 Distributed-COM 调用<br />
;com.allow_dcom = true<br />
; 自动注册位于com_load()函数的组件typlib的常量<br />
;com.autoregister_typelib = true<br />
; 注册常量大小写敏感<br />
;com.autoregister_casesensitive = false<br />
; 当有重复常量注册时显示警告<br />
;com.autoregister_verbose = true</p>
<p>[mbstring]<br />
; 内部字符表示的语言.<br />
;mbstring.language = Japanese</p>
<p>; 内部/脚本编码.<br />
; 部分编码无法作为内部编码使用.<br />
; (例如. SJIS, BIG5, ISO-2022-*)<br />
;mbstring.internal_encoding = EUC-JP</p>
<p>; http 输入编码.<br />
;mbstring.http_input = auto</p>
<p>; http 输出编码. mb_output_handler 必须作为函数被注册为输出缓冲<br />
;mbstring.http_output = SJIS</p>
<p>; 按照mbstring.internal_encoding的设置打开自动编码转换<br />
; 当设置为On时,输入字符被转换为内部编码.<br />
; 注意: 不要针对可移植库/应用使用自动编码转换.<br />
;mbstring.encoding_translation = Off</p>
<p>; 自动编码检测序列<br />
; 自动意味着<br />
;mbstring.detect_order = auto</p>
<p>; 当无法将字符从一种转换到另一种时使用的置换符号<br />
;mbstring.substitute_character = none;</p>
<p>; 使用mbstring函数 覆盖(替换) 单字节函数.<br />
; mail(), ereg(), 等等都会被 mb_send_mail(), mb_ereg() 等等覆盖,<br />
; 可以取的值是 0,1,2,4 或者他们的组合.<br />
; 例如, 7 就是覆盖所有函数.<br />
; 0: 不覆盖<br />
; 1: 覆盖 mail() 函数<br />
; 2: 覆盖 str*() 函数<br />
; 4: 覆盖 ereg*() 函数<br />
;mbstring.func_overload = 0</p>
<p>[FrontBase]<br />
;fbsql.allow_persistent = On<br />
;fbsql.autocommit = On<br />
;fbsql.show_timestamp_decimals = Off<br />
;fbsql.default_database =<br />
;fbsql.default_database_password =<br />
;fbsql.default_host =<br />
;fbsql.default_password =<br />
;fbsql.default_user = &#8220;_SYSTEM&#8221;<br />
;fbsql.generate_warnings = Off<br />
;fbsql.max_connections = 128<br />
;fbsql.max_links = 128<br />
;fbsql.max_persistent = -1<br />
;fbsql.max_results = 128</p>
<p>[gd]<br />
; 告知jpeg解码器libjpeg警告并且尝试创建一个gd图像. 此警告会被作为一个通告显示<br />
; 默认为关闭<br />
;gd.jpeg_ignore_warning = 0</p>
<p>[exif]<br />
; Exif UNICODE 用户注释会被作为UCS-2BE/UCS-2LE 和 JIS 来进行 JIS处理.<br />
; 当 mbstring.internal_encoding 设置为空,如果有 mbstring 支持,则会自动转换到给出的对应编码设置的编码.<br />
; 对于解码设置你可以在motorola和intel字符序列上进行选择. 解码设置不能设置为空.<br />
;exif.encode_unicode = ISO-8859-15<br />
;exif.decode_unicode_motorola = UCS-2BE<br />
;exif.decode_unicode_intel    = UCS-2LE<br />
;exif.encode_jis =<br />
;exif.decode_jis_motorola = JIS<br />
;exif.decode_jis_intel    = JIS</p>
<p>[Tidy]<br />
; 当调用tidy时,默认指向tidy配置文件的路径<br />
;tidy.default_config = /usr/local/lib/php/default.tcfg</p>
<p>; tidy是否自动清除和修复输出?<br />
; 警告: 不要在你产生非html内容时使用此项,例如产生动态图片时<br />
tidy.clean_output = Off</p>
<p>[soap]<br />
; 打开或关闭WSDL缓冲特性.<br />
soap.wsdl_cache_enabled=1<br />
; 设置SOAP扩展存放缓冲文件的目录.<br />
soap.wsdl_cache_dir=&#8221;/tmp&#8221;<br />
; (存活时间) 设置当缓冲文件被用来替换原有缓冲文件的秒数.<br />
soap.wsdl_cache_ttl=86400</p>
<p>; Local Variables:<br />
; tab-width: 4<br />
; End:</p>
<p>原文：<a href="http://www.phpv.net/html/1680.html">http://www.phpv.net/html/1680.html</a></p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/489.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plesk for Linux 安装Zend Optimizer</title>
		<link>http://226617.cn/archives/479.htm</link>
		<comments>http://226617.cn/archives/479.htm#comments</comments>
		<pubDate>Wed, 18 Mar 2009 09:10:15 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Plesk]]></category>
		<category><![CDATA[Zend Optimizer]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=479</guid>
		<description><![CDATA[今天在给一台linux 的plesk安装Zend Optimizer，全部默认安装，结果restart apache后php文件没法访问。查看apache的出错日志里面提示PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini f... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>今天在给一台linux 的plesk安装Zend Optimizer，全部默认安装，结果restart apache后php文件没法访问。查看apache的出错日志里面提示PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0<br />
后来仔细看了看plesk的php，发现用的是centos自带的php，就找到目录里面看发现是和plesk使用的Ioncube冲突。只要解决下先后加载顺序就行把php.ini里面的：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>Zend<span style="">&#93;</span></span>
zend_extension_manager.optimizer<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/Optimizer-3.3.0</span>
zend_extension_manager.optimizer_ts<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/Optimizer_TS-3.3.0</span>
zend_optimizer.version<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">3.3.0</span>
<span style="color: #000099;">zend_extension</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/ZendExtensionManager.so</span>
<span style="color: #000099;">zend_extension_ts</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/local/Zend/lib/ZendExtensionManager_TS.so</span></pre></td></tr></table></div>

<p>剪切然后修改etc/php.d/ioncube-loader.ini 添加到</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000099;">zend_extension</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">/usr/lib/php/modules//php_ioncube_loader_lin_5.1.so</span></pre></td></tr></table></div>

<p>后面就ok了</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/479.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php动态方式加载gd编译方法</title>
		<link>http://226617.cn/archives/428.htm</link>
		<comments>http://226617.cn/archives/428.htm#comments</comments>
		<pubDate>Wed, 18 Feb 2009 15:58:11 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[动态加载]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=428</guid>
		<description><![CDATA[首先安装好gd 假设gd是安装在/usr/local/gd2，php是安装在/usr/local/php-cgi的话 cd /usr/local/src/php-5.2.8/ext/gd/ /usr/local/php-cgi/bin/phpize ./configure &#8211;with-gd=/usr/local/gd2 &#8211;with-php-config=/usr/local/php-cgi/bin/php-c... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>首先安装好gd<br />
假设gd是安装在/usr/local/gd2，php是安装在/usr/local/php-cgi的话</p>
<p>cd /usr/local/src/php-5.2.8/ext/gd/<br />
/usr/local/php-cgi/bin/phpize<br />
./configure &#8211;with-gd=/usr/local/gd2 &#8211;with-php-config=/usr/local/php-cgi/bin/php-config<br />
make &#038;&#038; make install</p>
<p>然后再修改php.ini文件<br />
　　手工修改：查找/usr/local/php-cgi/etc/php.ini中的extension_dir = &#8220;./&#8221;<br />
　　修改为extension_dir = &#8220;/usr/local/php-cgi/lib/php/extensions/no-debug-non-zts-20060613/&#8221;<br />
　　并在此行后增加以下几行，然后保存：<br />
　　extension = &#8220;gd2.so&#8221;</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/428.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>x64位系统下php iconv函数输出空白问题</title>
		<link>http://226617.cn/archives/425.htm</link>
		<comments>http://226617.cn/archives/425.htm#comments</comments>
		<pubDate>Wed, 18 Feb 2009 15:47:00 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=425</guid>
		<description><![CDATA[接着昨天那个iconv问题继续研究，发现iconv函数数据输出为空。经过分析基本判断为gd库和iconv的冲突问题只要php编译中加入gd库支持就会导致这一情况，但是在x86系统里面缺完全没有这个问题，... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>接着昨天那个iconv问题继续研究，发现iconv函数数据输出为空。经过分析基本判断为gd库和iconv的冲突问题只要php编译中加入gd库支持就会导致这一情况，但是在x86系统里面缺完全没有这个问题，看来只是x64的问题。解决方法是把gd或者iconv作为作为动态模块加载，总之避免gd和iconv同时使用静态方式编译就行。ps：后来我发现我有一台x64的机器都是静态编译的但是就偏偏没有这个问题真是奇怪了。看来这问题还是有一定前提的</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/425.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>discuz论坛wap浏览无中文解决方法</title>
		<link>http://226617.cn/archives/422.htm</link>
		<comments>http://226617.cn/archives/422.htm#comments</comments>
		<pubDate>Tue, 17 Feb 2009 15:31:18 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[php相关]]></category>
		<category><![CDATA[软件相关]]></category>
		<category><![CDATA[discuz]]></category>
		<category><![CDATA[wap]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=422</guid>
		<description><![CDATA[一个兄弟网站的discuz论坛换了台新的服务器，从apache换到了nginx结果发现换了之后wap访问论坛出来的页面没有任何中文字（英文还是存在的）。我在看了之后一开始以为是wap程序php取数据库编码... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>一个兄弟网站的discuz论坛换了台新的服务器，从apache换到了nginx结果发现换了之后wap访问论坛出来的页面没有任何中文字（英文还是存在的）。我在看了之后一开始以为是wap程序php取数据库编码的问题。后来做了几次修改尝试后发现并非数据库输出内容无中文，而且经过和我们的对比发现连普通的静态内容的中文也都是没有的，一下子就想到问题出在了php上面，于是安装wap下面原来的index.php输出方式手写了一个临时php调试，发现php输出都没问题，有乱码出现，看来问题出在编码转换上面。于是自己看了下discuz的编码转码的库文件chinese.class.php，发现这台新服务器是启用iconv函数的，里面检测到了iconv然后使用iconv函数进行编码转换，忽然想到可能是系统iconv函数库的问题。于是找的了判断iconv的代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'iconv'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'TargetLang'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'BIG5'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$ForceTable</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">iconv_enabled</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">iconv_enabled</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">OpenTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">......</span></pre></td></tr></table></div>

<p>修改了这段代码绕过了iconv检测，强制设为不存在iconv的方式处理编码转换。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">iconv_enabled</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">OpenTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>然后测试果然中文又回来了。</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/422.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>终于搞定了64位centos的nginx+php+mysql编译问题</title>
		<link>http://226617.cn/archives/371.htm</link>
		<comments>http://226617.cn/archives/371.htm#comments</comments>
		<pubDate>Tue, 06 Jan 2009 14:16:16 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[linux相关]]></category>
		<category><![CDATA[mysql相关]]></category>
		<category><![CDATA[nginx相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[64位]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=371</guid>
		<description><![CDATA[以前也是一时起兴，顺手试了试结果php configure的时候出错，就放在那一直也没空弄。 最近打算把部分虚拟机扩到8G内存测试下压力所以又把64的系统装起来再次尝试。 吃好晚饭忽然觉得有点头... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><p>以前也是一时起兴，顺手试了试结果php configure的时候出错，就放在那一直也没空弄。<br />
最近打算把部分虚拟机扩到8G内存测试下压力所以又把64的系统装起来再次尝试。<br />
吃好晚饭忽然觉得有点头晕恶心，什么事情都干不了，就在那里翻config的log，结果发现原来是krb5没装，yum install krb5 krb5-devel后重新configure搞定。忽然发现头也不疼了哈哈。</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/371.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 中执行排序与 MySQL 中排序</title>
		<link>http://226617.cn/archives/200.htm</link>
		<comments>http://226617.cn/archives/200.htm#comments</comments>
		<pubDate>Sat, 20 Sep 2008 16:45:04 +0000</pubDate>
		<dc:creator>龙飞</dc:creator>
				<category><![CDATA[mysql相关]]></category>
		<category><![CDATA[php相关]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[排序]]></category>

		<guid isPermaLink="false">http://226617.cn/?p=200</guid>
		<description><![CDATA[Q：列出在 PHP 中执行排序要优于在 MYSQL 中排序的原因？给一些必须在MYSQL中排序的实例？ A：通常来说，执行效率需要考虑 CPU、内存和硬盘等的负载情况，假定 MYSQL 服务器和 PHP 的服务器都已... ]]></description>
			<content:encoded><![CDATA[<div style="clear:both; margin-top:5px; margin-bottom:5px;"></div><h4>Q：列出在 PHP 中执行排序要优于在 MYSQL 中排序的原因？给一些必须在MYSQL中排序的实例？</h4>
<p><strong>A</strong>：通常来说，执行效率需要考虑 CPU、内存和硬盘等的负载情况，假定 MYSQL 服务器和 PHP 的服务器都已经按照最适合的方式来配置，那么系统的可伸缩性（Scalability）和用户感知性能（User-perceived Performance）是我们追求的主要目标。在实际运行中，MYSQL 中数据往往以 HASH tables、BTREE 等方式存贮于内存，操作速度很快；同时 INDEX 已经进行了一些预排序；很多应用中，MYSQL 排序是首选。而在应用层（PHP）中排序，也必然在内存中进行，与 MYSQL 相比具有如下优势：</p>
<ul>
<li>1、 考虑整个网站的可伸缩性和整体性能，在应用层（PHP）中排序明显会降低数据库的负载，从而提升整个网站的扩展能力。而数据库的排序，实际上成本是非常高的，消耗内存、CPU，如果并发的排序很多，DB 很容易到瓶颈。</li>
<li>2、 如果在应用层(PHP)和MYSQL之间还存在数据中间层，合理利用，PHP会有更好的收益。</li>
<li>3、 PHP在内存中的数据结构专门针对具体应用来设计，比数据库更为简洁、高效；</li>
<li>4、 PHP不用考虑数据灾难恢复问题，可以减少这部分的操作损耗；</li>
<li>5、 PHP不存在表的锁定问题；</li>
<li>6、 MYSQL中排序，请求和结果返回还需要通过网络连接来进行，而PHP中排序之后就可以直接返回了，减少了网络IO。</li>
</ul>
<p>至于执行速度，差异应该不会很大，除非应用设计有问题，造成大量不必要的网络IO。另外，应用层要注意PHP 的 Cache 设置，如果超出会报告内部错误；此时要根据应用做好评估，或者调整Cache。具体选择，将取决于具体的应用。</p>
<h4>列出一些 PHP 中执行排序更优的情况：</h4>
<ul>
<li>1、 数据源不在 MYSQL 中，存在硬盘、内存或者来自网络的请求等；</li>
<li>2、 数据存在 MYSQL 中，量不大，而且没有相应的索引，此时把数据取出来用PHP排序更快；</li>
<li>3、 数据源来自于多个 MYSQL 服务器，此时从多个 MYSQL 中取出数据，然后在PHP中排序更快；</li>
<li>4、 除了 MYSQL 之外，存在其他数据源，比如硬盘、内存或者来自网络的请求等，此时不适合把这些数据存入 MYSQL 后再排序；</li>
</ul>
<h4>列出一些必须在 MYSQL 中排序的实例：</h4>
<ul>
<li>1、 MYSQL 中已经存在这个排序的索引；</li>
<li>2、 MYSQL 中数据量较大，而结果集需要其中很小的一个子集；比如 1000000 行数据，取TOP 10；</li>
<li>3、 对于一次排序、多次调用的情况，比如统计聚合的情形，可以提供给不同的服务使用，那么在 MYSQL 中排序是首选的。另外，对于数据深度挖掘，通常做法是在应用层做完排序等复杂操作，把结果存入MYSQL即可，便于多次使用。</li>
<li>4、 不论数据源来自哪里，当数据量大到一定的规模后，由于占用内存/Cache 的关系，不再适合 PHP 中排序了；此时把数据复制、导入或者存在 MYSQL ，并用 INDEX 优化，是优于 PHP 的。不过，用 Java，甚至 C++ 来处理这类操作会更好。 [有些类似大数据集聚合或者汇总的数据，在客户端排序得不偿失。当然，也有用类似搜索引擎的思路来解决类似应用的情况。]</li>
</ul>
<p>从网站整体考虑，就必须加入人力和成本的考虑。假如网站规模和负载较小，而人力有限（人数和能力都可能有限），此时在应用层（PHP）做排序要做不少开发和调试工作，耗费时间，得不偿失；不如在 DB 中处理，简单快速。对于大规模的网站，电力、服务器的费用很高，在系统架构上精打细算，可以节约大量的费用，是公司持续发展之必要；此时如果能在应用层(PHP) 进行排序并满足业务需求，尽量在应用层进行。</p>
<p>&#8211;EOF&#8211;</p>
<div style="float:left"><!-- JiaThis Button BEGIN -->
<script type="text/javascript">var jiathis_config = {data_track_clickback:true};</script>
<script type="text/javascript" src="http://v2.jiathis.com/code/jiathis_r.js?move=0&amp;btn=r3.gif&amp;uid=907308" charset="utf-8"></script>
<!-- JiaThis Button END -->|2|left|yes</div><div style="clear:both; margin-top:5px; margin-bottom:5px;"></div>]]></content:encoded>
			<wfw:commentRss>http://226617.cn/archives/200.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

