<?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>阿乐的博客 &#187; php</title>
	<atom:link href="http://ale.net.cn/blog/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://ale.net.cn/blog</link>
	<description>没有句号的梦想</description>
	<lastBuildDate>Wed, 22 Dec 2010 14:56:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>关于PHP中的Cannot modify header information的解决问题</title>
		<link>http://ale.net.cn/blog/2009/07/%e5%85%b3%e4%ba%8ephp%e4%b8%ad%e7%9a%84cannot-modify-header-information%e7%9a%84%e8%a7%a3%e5%86%b3%e9%97%ae%e9%a2%98/</link>
		<comments>http://ale.net.cn/blog/2009/07/%e5%85%b3%e4%ba%8ephp%e4%b8%ad%e7%9a%84cannot-modify-header-information%e7%9a%84%e8%a7%a3%e5%86%b3%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 06:49:08 +0000</pubDate>
		<dc:creator>ale</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[BOM]]></category>
		<category><![CDATA[http头]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ale.net.cn/blog/?p=72</guid>
		<description><![CDATA[刚刚接触php，在做页面定义Header输出的时候碰到了个小问题。
Warning: Cannot modify header information &#8211; headers already sent by (output started at H:\root\&#8230;\a.php:1) in H:\root\&#8230;\b.php on line 11
网上找了下资料说是有可能是因为a.php里面有空格或空行造成，但是全部处理干净后还是有这个问题。
var_dump(headers_list());
显示http头信息如下
array(2) {
  [0]=&#62;
  string(23) &#8220;X-Powered-By: PHP/5.2.3&#8243;
  [1]=&#62;
  string(23) &#8220;Content-type: text/html&#8221;
}
说明a.php有其他内容，只是编辑器没有显示出来。
后来网上找到这篇文章，http://www.cnitblog.com/CoffeeCat/archive/2008/12/15/52629.html。看了之后更加明了。 
摘录如下：
有时候并没有输出任何东西，却还是会出现这个错误，这是因为我们的文件包含了BOM签名。
请看测试代码：
&#60;?php
header(&#8221;content-type:text/html;charset=utf-8&#8243;);
die();
?&#62;
这段代码就是简单的header一下，在&#60;?php之前也没有任何输出，也没有空格，但是网页里还是提示了Cannot modify header information的警告信息。这说明，在&#60;?php之前还有内容，只是编辑器没有显示出来。
我们用ultraEdit打开这个文件，切换到16进制，可以看到，在文本的开头，有EFBBBF，之后才是3C 3F 70 68 70 ( &#60;?php )，说明，在&#60;?php之前，确实存在着输出信息，因此，在修改header的时候，会得到警告信息。

这个EFBBBF是什么东西呢？它的名字叫BOM，Byte Order Mark，是在Windows下的一个约定，用于标记文本是否是Unicode。记事本程序就是通过这三个字节来判断文件是ANSI还是Unicode。
知道了问题发生的原因，下面，我们想办法把BOM去掉。用Dreamweaver打开这个php页面，然后进入页面设置（按Ctrl+J），弹出以下窗口：
   
取消选择“包括Unicode签名（BOM）”，确定就可以了。现在，我们再用UltraEdit打开看这个文件的16进制内容，如下图

可以看到，现在BOM信息已经没有了，文件直接以3C3F70开头了。
最后，我们刷新一下浏览器，发现现在已经没有Warning提示了，问题解决。
]]></description>
			<content:encoded><![CDATA[<p>刚刚接触php，在做页面定义Header输出的时候碰到了个小问题。</p>
<p>Warning: Cannot modify header information &#8211; headers already sent by (output started at H:\root\&#8230;\a.php:1) in H:\root\&#8230;\b.php on line 11</p>
<p>网上找了下资料说是有可能是因为a.php里面有空格或空行造成，但是全部处理干净后还是有这个问题。</p>
<p>var_dump(headers_list());</p>
<p>显示http头信息如下</p>
<p>array(2) {<br />
  [0]=&gt;<br />
  string(23) &#8220;X-Powered-By: PHP/5.2.3&#8243;<br />
  [1]=&gt;<br />
  string(23) &#8220;Content-type: text/html&#8221;<br />
}</p>
<p>说明a.php有其他内容，只是编辑器没有显示出来。</p>
<p>后来网上找到这篇文章，<a href="http://www.cnitblog.com/CoffeeCat/archive/2008/12/15/52629.html">http://www.cnitblog.com/CoffeeCat/archive/2008/12/15/52629.html</a>。看了之后更加明了。 </p>
<p><strong>摘录如下：</strong></p>
<p>有时候并没有输出任何东西，却还是会出现这个错误，这是<span style="FONT-WEIGHT: bold">因为我们的文件包含了BOM签名</span>。</p>
<p>请看测试代码：</p>
<p>&lt;?php<br />
header(&#8221;content-type:text/html;charset=utf-8&#8243;);<br />
die();<br />
?&gt;</p>
<p>这段代码就是简单的header一下，在&lt;?php之前也没有任何输出，也没有空格，但是网页里还是提示了Cannot modify header information的警告信息。这说明，在&lt;?php之前还有内容，只是编辑器没有显示出来。</p>
<p>我们用ultraEdit打开这个文件，切换到16进制，可以看到，在文本的开头，有EFBBBF，之后才是3C 3F 70 68 70 ( &lt;?php )，说明，在&lt;?php之前，确实存在着输出信息，因此，在修改header的时候，会得到警告信息。</p>
<p><img src="http://www.cnitblog.com/images/cnitblog_com/coffeecat/modifyheader/bom.JPG" alt="" width="651" height="80" /></p>
<p>这个EFBBBF是什么东西呢？它的名字叫BOM，Byte Order Mark，是在Windows下的一个约定，用于标记文本是否是Unicode。记事本程序就是通过这三个字节来判断文件是ANSI还是Unicode。</p>
<p>知道了问题发生的原因，下面，我们想办法把BOM去掉。用Dreamweaver打开这个php页面，然后进入页面设置（按Ctrl+J），弹出以下窗口：<br />
   <img src="http://www.cnitblog.com/images/cnitblog_com/coffeecat/modifyheader/snap4.JPG" alt="" width="600" height="352" /></p>
<p>取消选择“包括Unicode签名（BOM）”，确定就可以了。现在，我们再用UltraEdit打开看这个文件的16进制内容，如下图</p>
<p><img src="http://www.cnitblog.com/images/cnitblog_com/coffeecat/modifyheader/nobom.JPG" alt="" width="647" height="71" /></p>
<p>可以看到，现在BOM信息已经没有了，文件直接以3C3F70开头了。</p>
<p>最后，我们刷新一下浏览器，发现现在已经没有Warning提示了，问题解决。</p>
]]></content:encoded>
			<wfw:commentRss>http://ale.net.cn/blog/2009/07/%e5%85%b3%e4%ba%8ephp%e4%b8%ad%e7%9a%84cannot-modify-header-information%e7%9a%84%e8%a7%a3%e5%86%b3%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php下屏蔽错误提示</title>
		<link>http://ale.net.cn/blog/2009/07/php%e4%b8%8b%e5%b1%8f%e8%94%bd%e9%94%99%e8%af%af%e6%8f%90%e7%a4%ba/</link>
		<comments>http://ale.net.cn/blog/2009/07/php%e4%b8%8b%e5%b1%8f%e8%94%bd%e9%94%99%e8%af%af%e6%8f%90%e7%a4%ba/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 07:46:22 +0000</pubDate>
		<dc:creator>ale</dc:creator>
				<category><![CDATA[程序]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xampp]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">http://ale.net.cn/blog/?p=58</guid>
		<description><![CDATA[最简便的方法就是修改php.ini。
在php.ini中设置display_errors = Off就可以。另外可以开启错误日志，设置log_errors = On，以及指定日志路径error_log = /apache/logs/php_error.log。
当初找到在这个方法，但是怎么改，都没有效果。原来用的是xampp，就如上篇日志说的，该死的xampp用的是php.ini是在apache/bin下面。害我当初纳闷一下午。
另外还可以在程序的页首添加error reporting(0)，或在单个语句前加：@
]]></description>
			<content:encoded><![CDATA[<p>最简便的方法就是修改php.ini。</p>
<p>在php.ini中设置display_errors = Off就可以。另外可以开启错误日志，设置log_errors = On，以及指定日志路径error_log = /apache/logs/php_error.log。</p>
<p>当初找到在这个方法，但是怎么改，都没有效果。原来用的是xampp，就如上篇日志说的，该死的xampp用的是php.ini是在apache/bin下面。害我当初纳闷一下午。</p>
<p>另外还可以在程序的页首添加error reporting(0)，或在单个<span class="t_tag" onclick="function onclick() { function onclick() { tagshow(event) } }">语句</span>前加：@</p>
]]></content:encoded>
			<wfw:commentRss>http://ale.net.cn/blog/2009/07/php%e4%b8%8b%e5%b1%8f%e8%94%bd%e9%94%99%e8%af%af%e6%8f%90%e7%a4%ba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xampp下php.ini的date.timezone设置问题</title>
		<link>http://ale.net.cn/blog/2009/07/xampp%e4%b8%8bphpini%e7%9a%84datetimezone%e8%ae%be%e7%bd%ae%e9%97%ae%e9%a2%98/</link>
		<comments>http://ale.net.cn/blog/2009/07/xampp%e4%b8%8bphpini%e7%9a%84datetimezone%e8%ae%be%e7%bd%ae%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 08:54:29 +0000</pubDate>
		<dc:creator>ale</dc:creator>
				<category><![CDATA[软件]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[timezone]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://ale.net.cn/blog/?p=55</guid>
		<description><![CDATA[使用xampp时间不久，今天为了纠正php获取函数是获取服务器时间。
因为php5.1.0开始，php.ini里加入了date.timezone这个选项，默认情况下是关闭的。显示的时间都是格林威治标准时间,和北京时间差了正好8个小时。
网上找到的方法：
修改php.ini文件，查找 ;date.timezone = ，把前面的分号去掉在 &#8220;=&#8221;后面加上时区。
比如：Asia/Chongqing (重庆)，Asia/Shanghai (上海)，Asia/Urumqi (乌鲁木齐)，Asia/Macao (澳门)，Asia/Hong_Kong (香港)，Asia/Taipei (台北)，PRC
例
;date.timezone =
改成:
date.timezone = Asia/Shanghai
方法很简单。可是在xampp下，把php/php.ini文件改来改去都没用。后来网上搜了才发现，该死的xampp，把php.ini放在apache/bin下面，修改这个里面的php.ini才有用。
]]></description>
			<content:encoded><![CDATA[<p>使用xampp时间不久，今天为了纠正php获取函数是获取服务器时间。</p>
<p>因为php5.1.0开始，php.ini里加入了date.timezone这个选项，默认情况下是关闭的。显示的时间都是格林威治标准时间,和北京时间差了正好8个小时。</p>
<p>网上找到的方法：</p>
<p>修改php.ini文件，查找 ;date.timezone = ，把前面的分号去掉在 &#8220;=&#8221;后面加上时区。</p>
<p>比如：Asia/Chongqing (重庆)，Asia/Shanghai (上海)，Asia/Urumqi (乌鲁木齐)，Asia/Macao (澳门)，Asia/Hong_Kong (香港)，Asia/Taipei (台北)，PRC</p>
<p>例<br />
;date.timezone =<br />
改成:<br />
date.timezone = Asia/Shanghai</p>
<p>方法很简单。可是在xampp下，把php/php.ini文件改来改去都没用。后来网上搜了才发现，该死的xampp，把php.ini放在apache/bin下面，修改这个里面的php.ini才有用。</p>
]]></content:encoded>
			<wfw:commentRss>http://ale.net.cn/blog/2009/07/xampp%e4%b8%8bphpini%e7%9a%84datetimezone%e8%ae%be%e7%bd%ae%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php判断值为空的两个函数 empty 和 isset</title>
		<link>http://ale.net.cn/blog/2009/06/php%e5%88%a4%e6%96%ad%e5%80%bc%e4%b8%ba%e7%a9%ba%e7%9a%84%e4%b8%a4%e4%b8%aa%e5%87%bd%e6%95%b0-empty-%e5%92%8c-isset/</link>
		<comments>http://ale.net.cn/blog/2009/06/php%e5%88%a4%e6%96%ad%e5%80%bc%e4%b8%ba%e7%a9%ba%e7%9a%84%e4%b8%a4%e4%b8%aa%e5%87%bd%e6%95%b0-empty-%e5%92%8c-isset/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 11:22:34 +0000</pubDate>
		<dc:creator>ale</dc:creator>
				<category><![CDATA[程序]]></category>
		<category><![CDATA[empty]]></category>
		<category><![CDATA[isset]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ale.net.cn/blog/?p=39</guid>
		<description><![CDATA[php两个的函数 empty 和 isset 。
bool empty ( mixed $var )
http://ca.php.net/manual/zh/function.empty.php
如果 var 是非空或非零的值，则 empty() 返回 FALSE。换句话说，&#8221;"、0、&#8221;0&#8243;、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的，如果 var 为空，则返回 TRUE。
bool isset ( mixed $var [, mixed $var [, $... ]] )
http://ca.php.net/manual/zh/function.isset.php
如果 var 存在则返回 TRUE，否则返回 FALSE。
empty() 与 isset() 的一个简单比较。
$var = 0;// 结果为 true，因为 $var 为空
if (empty($var)) {
echo &#8216;$var is either 0 or not set at all&#8217;;
}
// [...]]]></description>
			<content:encoded><![CDATA[<p>php两个的函数 empty 和 isset 。</p>
<p>bool empty ( mixed $var )</p>
<p><a href="http://ca.php.net/manual/zh/function.empty.php">http://ca.php.net/manual/zh/function.empty.php</a></p>
<p>如果 var 是非空或非零的值，则 empty() 返回 FALSE。换句话说，&#8221;"、0、&#8221;0&#8243;、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的，如果 var 为空，则返回 TRUE。</p>
<p>bool isset ( mixed $var [, mixed $var [, $... ]] )</p>
<p><a href="http://ca.php.net/manual/zh/function.isset.php">http://ca.php.net/manual/zh/function.isset.php</a></p>
<p>如果 var 存在则返回 TRUE，否则返回 FALSE。</p>
<p><strong>empty() 与 isset() 的一个简单比较。</strong><br />
<!--p<br-->$var = 0;// 结果为 true，因为 $var 为空<br />
if (empty($var)) {<br />
echo &#8216;$var is either 0 or not set at all&#8217;;<br />
}<br />
// 结果为 false，因为 $var 已设置<br />
if (!isset($var)) {<br />
echo &#8216;$var is not set at all&#8217;;<br />
}<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://ale.net.cn/blog/2009/06/php%e5%88%a4%e6%96%ad%e5%80%bc%e4%b8%ba%e7%a9%ba%e7%9a%84%e4%b8%a4%e4%b8%aa%e5%87%bd%e6%95%b0-empty-%e5%92%8c-isset/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

