﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-自由虽然有代价，但一切都值得！！！-随笔分类-关于PHP</title><link>http://www.phpweblog.net/sosopro/category/30.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 21 May 2007 02:21:27 GMT</lastBuildDate><pubDate>Mon, 21 May 2007 02:21:27 GMT</pubDate><ttl>60</ttl><item><title>关于曼波4.5.5的乱码问题</title><link>http://www.phpweblog.net/sosopro/archive/2007/05/21/1233.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Mon, 21 May 2007 00:04:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2007/05/21/1233.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/1233.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2007/05/21/1233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/1233.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/1233.html</trackback:ping><description><![CDATA[开始我是在win2000上研究,几乎没有出现过乱码问题,可是昨晚换了台XP系统的电脑,坏了,MYSQL5.1根本就不能建立表,后来装了MYSQL4.1,可是乱码来了,换了N多字符集,没用.最后没法,PHP 和APACHE里都没有指定字符集,在MY.INI里的选用默认的,虽然有个表会建立不了报错,但是已经解决问题,方法就是改下字段的属性<br>CREATE TABLE `#__core_acl_aro` (<br>&nbsp; `aro_id` int(11) NOT NULL auto_increment,<br>&nbsp; `section_value` varchar(<span style="COLOR: #ff0000">240</span>) NOT NULL default '0',<br>&nbsp; `value` varchar(<span style="COLOR: #ff0000">240)</span> NOT NULL default '',<br>&nbsp; `order_value` int(11) NOT NULL default '0',<br>&nbsp; `name` varchar(255) NOT NULL default '',<br>&nbsp; `hidden` int(11) NOT NULL default '0',<br>&nbsp; PRIMARY KEY&nbsp; (`aro_id`),<br>&nbsp; UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),<br>&nbsp; UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),<br>&nbsp; KEY `hidden_aro` (`hidden`),<br>&nbsp; KEY `#__gacl_hidden_aro` (`hidden`)<br>) TYPE=MyISAM;<br><br><br>改成了<br>CREATE TABLE `#__core_acl_aro` (<br>&nbsp; `aro_id` int(11) NOT NULL auto_increment,<br>&nbsp; `section_value` varchar(<span style="COLOR: #ff0000">160</span>) NOT NULL default '0',<br>&nbsp; `value` varchar(<span style="COLOR: #ff0000">160</span>) NOT NULL default '',<br>&nbsp; `order_value` int(11) NOT NULL default '0',<br>&nbsp; `name` varchar(255) NOT NULL default '',<br>&nbsp; `hidden` int(11) NOT NULL default '0',<br>&nbsp; PRIMARY KEY&nbsp; (`aro_id`),<br>&nbsp; UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),<br>&nbsp; UNIQUE KEY `#__gacl_section_value_value_aro` (`section_value`,`value`),<br>&nbsp; KEY `hidden_aro` (`hidden`),<br>&nbsp; KEY `#__gacl_hidden_aro` (`hidden`)<br>) TYPE=MyISAM;
<img src ="http://www.phpweblog.net/sosopro/aggbug/1233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2007-05-21 08:04 <a href="http://www.phpweblog.net/sosopro/archive/2007/05/21/1233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>php config</title><link>http://www.phpweblog.net/sosopro/archive/2007/05/21/1232.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Sun, 20 May 2007 20:23:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2007/05/21/1232.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/1232.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2007/05/21/1232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/1232.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/1232.html</trackback:ping><description><![CDATA[<strong><font color=#ff0000>PHP 的安装</font></strong> <br><br>由于php是一个zip文件(非install版)，安装较为简单<br>解压就行。把解压的 php5.2.1-Win32重命名为 php5。并复制到安装盘目录下。例如安装路径为 c:\php5 <br>1&nbsp;&nbsp;找到php目录下的 php.ini-dist或 php.ini.recommended文件，重命名为 php.ini,并复制到系统盘的windows目录下(以c:\windows为例,2000是在winnt目录下，下面都采用网友的方法来说明). <br><br>2&nbsp;&nbsp;再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下。<br><br>3&nbsp;&nbsp;把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下 <br>如果没有加载 php_gd2.dll&nbsp;&nbsp;php将不能处理图像。没有加载php_mysql.dll php将不支持mysql函数库&nbsp; php_mbstring.dll在后面使用phpmyadmin时支持宽字符 <br>所有东西安装完成后我们再进行配置 <br><br><font size=3><strong><font color=#ff0000>配置php并关联MySQL</font></strong></font> <br><span></span>打开c:\windows\php.ini文件 <br>1 设置扩展路径<br>查找 extension_dir 有这么一行<br>extension_dir = "./"<br>将此行改成<br>extension_dir = "C:\php5\ext" <br>其中C:\php5是你安装php的路径。路径不正确将无法加载dll <br>(注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)<br><br>2 查找 extension <br>extension=php_mbstring.dll<br>extension=php_gd2.dll<br>extension=php_mysql.dl <br>把上面3项前面的分号去掉，这样apache启动时就可以加载这些dll了<br>当然前面我们也把这些dll复制到system32下了l <br><br>3 设置会话保存路径<br>查找session.save_path 有这么一行<br>;&nbsp; &nbsp;&nbsp;&nbsp;session.save_path = "N;/path"<br>在此行后加入一行(<font color=#ff0000>注意是加入一行，不是加到后面</font>)<br>session.save_path = "C:\WINDOWS\Temp" <br>保存到你的临时目录下，这里完全可以保存到windows临时目录Temp下 <br><br>4 还有比较值得注意的是 short_open_tag 默认是Off的<br>也就是说 php不能使用短标记如 &lt;? ?&gt; 必须使用&lt;?php ?&gt;<br>由于短标记使用方便，并且很多程序也是用短短标记来写，如discuz等<br>如果不把 short_open_tag 改成On将出现的症状将很难判断是上面原因，这里建议修改 <br>查找<br>short_open_tag = Off<br>改为<br>short_open_tag = On <br><br>5 是否显示错误 display_errors <br>出于安全性考虑，display_errors 也默认为 Off<br>就是说在调试时，如果php代码有误，就只出现一个空白页。而不会显示出错原因和出错行数。<br>这样调试起来将非常不便，建议根据自己需要修改<br>查找<br>display_errors = Off&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(注意不是 ; - display_errors = Off&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;[Security])<br>改成<br>display_errors = On <br><br>6 register_globals<br>出于安全性考虑它默认也是Off<br>当register_globals=Off的时候，下一个程序接收的时候应该用$_POST['user_name']和$_POST['user_pass']） <br>当register_globals=On的时候，下一个程序可以直接使用$user_name和$user_pass来接受值。 <br>更详细的说明请参考<br><a href="http://www.phpfans.net/bbs/archiver/?tid-234.htm" target=_blank><font color=#96b0af size=2>http://www.phpfans.net/bbs/archiver/?tid-234.htm</font></a> <br>建议根据自己需要修改 <br><br>7 php5时差问题<br>&lt;?php echo date("Y-m-d H:i:s");?&gt;时间相差八小时<br>为什么呢?PHP5系列版本新增了时区设置，默认为格林威治时间，与中国所在的东8区正好相差8个小时<br>查找date.timezone有这么一行<br>;date.timezone =<br>将;去掉，改成<br>date.timezone = PRC <br>其中PRC：People's Republic of China 中华人民共和国, <br>更详细解决方法请参考本论坛的<br><a href="http://www.phpfans.net/bbs/archiver/?tid-60.html" target=_blank><font color=#96b0af size=2>http://www.phpfans.net/bbs/archiver/?tid-60.html</font></a> <br>更多文章 php爱好者站 <a href="http://www.phpfans.net/" target=_blank><font color=#96b0af size=2>http://www.phpfans.net/</font></a><br><br><font size=3><strong><font color=#ff0000>Apache整合PHP</font></strong> </font><br><br>1 从开始菜单打开apache配置文档<br><img alt="" src="http://schism.blog.sohu.com/43248314.html#" border=0> <br>2 修改网站根目录<br>查找 DocumentRoot有这么一行<br>DocumentRoot"C:/Program Files/Apache Group/Apache2/htdos"<br>这就是你网站的根目录，你可以修改，也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误<br>查找&nbsp;&nbsp;This should be changed to whatever you set DocumentRoot to<br>在它下面两行有<br>&lt;Directory "C:/Program Files/Apache Group/Apache2/htdocs"&gt;<br>把上面两项的 C:/Program Files/Apache Group/Apache2/htdos 改成你想要的目录<br><br>3 查找&nbsp;&nbsp;DirectoryIndex index.html index.html.var<br>修改成<br>DirectoryIndex index.html index.html.var&nbsp;&nbsp;index.php <br>这样index.php 可以充当默认页面了 <br><br>4 Apache中模块化安装php<br>查找 # LoadModule foo_module modules/mod_foo.so<br>在此行后加入一行<br>LoadModule php5_module C:/php5/php5apache2.dll<br><br>其中C:/php5/php5apache2.dll是你安装php的相应路径.<br>注意不要把php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.<br><font color=#ff0000>注意:</font> PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,就可能会出现<br><font color=#ff0000>"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."</font><br>或者:<br><font color=#ff0000>"The requested operation has failed"</font><br>的情况.关于这个问题的解决方法可以参考本论坛的<br><a href="http://www.phpfans.net/bbs/viewthread.php?tid=857&amp;extra=page%3D1" target=_blank><font color=#96b0af size=2>http://www.phpfans.net/bbs/viewthread.php?tid=857&amp;extra=page%3D1</font></a><br><br>5 查找 AddType application/x-gzip .gz .tgz <br>在此行后加入一行<br>AddType application/x-httpd-php .php <br>这样apache就可以解释php文件了 <br>到这里配置基本完成了 <br><br>########<font color=#ff0000><font size=4>重启apache</font></font>######### <br><br>在网站根目录下创建一个 phpinfo.php 文件 <br><br>&lt;?php<br>phpinfo();<br>?&gt; <br><br>在浏览器打开<br>http://localhost/phpinfo.php<br>如果出现如下信息，则说明php已经配置好了 <br><img alt="" src="http://schism.blog.sohu.com/43248314.html#" border=0><br><br>下面再测试php和mysql数据库的关联 <br>在网站根目录下创建一个test.php 文件<br>
<div style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em">
<div style="FLOAT: left">CODE:</div>
<div style="FLOAT: right; TEXT-ALIGN: right"><a href="http://www.phpfans.net/bbs/viewthread.php?tid=331&amp;extra=page%3D1#"><font color=#96b0af size=2>[Copy to clipboard]</font></a></div>
</div>
<div><code><font color=#000000><font color=#007700>&lt;?</font><font color=#0000bb>php <br>$link</font><font color=#007700>=</font><font color=#0000bb>mysql_connect</font><font color=#007700>(</font><font color=#dd0000>"localhost"</font><font color=#007700>,</font><font color=#dd0000>"root"</font><font color=#007700>,</font><font color=#dd0000>"12345"</font><font color=#007700>);&nbsp;&nbsp;</font><font color=#ff8000>//12345改成你的mysql密码 <br></font><font color=#007700>if(!</font><font color=#0000bb>$link</font><font color=#007700>)&nbsp;echo&nbsp;</font><font color=#dd0000>"失败!"</font><font color=#007700>; <br>else&nbsp;echo&nbsp;</font><font color=#dd0000>"成功!"</font><font color=#007700>; <br></font><font color=#0000bb>mysql_close</font><font color=#007700>(); <br>?&gt;&nbsp;</font><br></font></code></div>
<p>在浏览器打开 http://localhost/test.php<br>如果输出成功,则说明大功告成了.<br><br><font size=3><strong><font color=#ff0000>安装 phpMyAdmin</font></strong> </font><br><br>下载得到 phpMyAdmin-2.7.0.zip，将其解压到 你网站根目录下并重命名为phpMyAdmin，<br>找到并打开 config.defaut.php (有些版本是config.inc.php或者 libraries/config.default.php)<br>做以下修改： <br><br>1 查找 password 有如下两行<br>$cfg['Servers'][$i]['user']&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; = 'root';&nbsp; &nbsp;&nbsp;&nbsp;<br>$cfg['Servers'][$i]['password']&nbsp; &nbsp;&nbsp; &nbsp;= ''; <br><br>把你的mysql密码填到$cfg['Servers'][$i]['password']&nbsp; &nbsp;&nbsp; &nbsp;= ''; 单引号里边 <br><br>2 搜索 $cfg['PmaAbsoluteUri']，将其设置为 phpMyAdmin 目录路径，如：<a href="http://localhost/phpMyAdmin/" target=_blank><font color=#96b0af size=2>http://localhost/phpMyAdmin/</font></a> ； <br><br>下面这两项项根据自己需要的编码修改(如果对数据库编码不是很熟悉的建议不要修改)<br>3 搜索 $cfg['DefaultLang']，将其设置为 zh-gb2312 ;<br>4 搜索 $cfg['DefaultCharset']，将其设置为 gb2312 ; <br><br>打开浏览器，输入：<a href="http://localhost/phpMyAdmin/" target=_blank><font color=#96b0af size=2>http://localhost/phpMyAdmin/</font></a>，Apache 和 MySQL 均已启动，<br>如果出现如下页面则phpmyadmin安装完成并可以使用了<br><img alt="" src="http://schism.blog.sohu.com/43248314.html#" border=0> <br>phpMyAdmin 的具体功能，请慢慢熟悉，这里不再赘述。</p>
<p><font style="COLOR: rgb(0,0,153); FONT-FAMILY: 黑体" size=5>本人综合小结：</font></p>
<p>1、安装目录尽量用英文来命名，文件也是一样（谁叫咱中国落后呢）</p>
<p>2、apache是提供web服务，MYSQL数据库连接方面本人并未验证，我是用一个PHPWIND论坛直接安装，证明连接是成功的，php等最好上官方网站下。（我先是用了个不知道从哪个地方下的PHP5.2.1，结果少了个文件，总是说模块无法加载，弄了半天才发现，郁闷）</p>
<p>3、本人系统是在D下的2000服务器版本，因此，c:\windows通通改成d:\winnt，大家这个应该明白吧。</p>
<p>4、补充下,在iis下配置PHP更加简单：</p>
<p>Windows&nbsp;2000下PHP+IIS的安装方法</p>
<p>&lt;1&gt;、把php-5.0.0（若有新版，推荐使用）-Win32.zip解压放到C:\php。</p>
<p>&lt;2&gt;、将php.ini-dist复制到Winnt目录下并改名为php.ini，复制php5ts.dll和libmysql.dll到WINNTsystem32中。</p>
<p>&lt;3&gt;、接下来在IIS中进行设置，打开默认站点属性对话框，切换到&#8220;主目录&#8221;选项卡，然后点&#8220;配置&#8221;按钮打开&#8220;应用程序配置对话框&#8221;，点&#8220;添加&#8221;按钮打开&nbsp;&#8220;添加/编辑应用程序扩展名映射&#8221;对话框。在&#8220;可执行文件&#8221;输入框中，指向c:/php/php5isapi.dll，在&#8220;扩展名&#8221;输入框里面输入&nbsp;&#8220;.php&#8221;（不包括引号），并选中&#8220;脚本引擎&#8221;和&#8220;检查文件是否存在&#8221;两个复选框，一路确定并退出IIS。</p>
<p>至此服务器应该已经能够同时支持asp和php了。</p>
<p>下面对php.ini进行配置让php支持MYSQL和GD库</p>
<p>&lt;1&gt;、在记事本中查找&#8220;extension_dir&#8221;，然后把<br>extension_dir&nbsp;=&nbsp;"./"<br>修改为<br>extension_dir&nbsp;=&nbsp;"C:\php\ext"</p>
<p>&lt;2&gt;、在记事本中查找&#8220;;extension=php_mysql.dll&#8221;和&#8220;;extension=php_gd2.dll&#8221;，然后把前面的&#8220;;&#8221;去掉，即把<br>;extension=php_mysql.dll<br>改为<br>extension=php_mysql.dll</p>
<p>把<br>;extension=php_gd2.dll<br>改为<br>extension=php_gd2.dll</p>
<p>&lt;3&gt;、保存好php.ini，然后重起IIS即可<br><br><br><br><br><span class=bold>php5.12+apache2.054+mysql5.0 window xp下安装手记</span><br><br></p>
<div class=t_msgfont id=message16854>1、安装apache<br><br>&nbsp;&nbsp;apache_2.0.54-win32-x86-no_ssl,很easy的，一路next就ok了。安装完毕，打开安装目录下的\htdocs文件夹，修改里面任何一个文件后缀改为htm即可以。<br><br>&nbsp;&nbsp;打开<a href="http://localhost/" target=_blank>http://localhost</a>检查是否安装成功。<br><br>2、安装php5<br><br>&nbsp;&nbsp;解压php-5.1.2-Win32到目录到c:\php,将目录下的php5ts.dll copy到c:\windows目录下。<br><br>复制 c:\PHP 目录下的下列 dll 文件于 C:\windowssystem32 目录下：<br>　　fdftk.dll <br>　　fribidi.dll <br>　　gds32.dll <br>　　libeay32.dll <br>　　libintl-1.dll <br>　　libmhash.dll <br>　　libmysql.dll <br>　　libmysqli.dll <br>　　ntwdblib.dll <br>　　ntwdblib.dll <br>　　yaz.dll <br>　　其中 libmysql.dll 为 MySQL 4.1 之前版本的扩展支持，libmysqli.dll 为 MySQL 4.1 之后版本的扩展支持。因为我上面下载的是 MySQL 4.0.20 ，所以其实复制 libmysql.dll 即可。<br>复制 C:\PHP 目录下的 php.ini-dist 文件到 C:\windows 目录下，并改名为 php.ini ，并用记事本打开编辑：<br>　　定位到下面两行：<br>; Directory in which the loadable extensions (modules) reside. <br>extension_dir = "./" <br>　　修改下面一行使它指向 c:\PHPext 目录，修改后如下：<br>; Directory in which the loadable extensions (modules) reside. <br>extension_dir = "c:\PHP\ext" <br><br>把;extension=php_mysql.dll前的;去掉<br><br>3、修改apache 目录下的 httpd.conf 文件，定位到下面这行：<br>DirectoryIndex index.html index.html.var<br>在其后面添加一个 PHP 默认页，通常是 index.php ，如下：<br>DirectoryIndex index.html index.html.var index.php<br>为了使 Apache 识别 PHP 的相关扩展名，搜索并定位到下面这个部分： <br>&lt;Directory "c:/apache/Apache2/cgi-bin"&gt; <br>AllowOverride None <br>Options None <br>Order allow,deny <br>Allow from all <br>&lt;/Directory&gt;<br><br>在后面添加如下两行：<br>AddType application/x-httpd-php .php .phtml .php3 .php4<br>AddType application/x-httpd-php-source .phps<br>指定 php 模块，找到并定位到如下这行：<br>#LoadModule ssl_module modules/mod_ssl.so<br>在下面添加一行：<br><br>LoadModule php5_module c:\PHP\php5apache2.dll<br>　　使它指向 PHP5 目录下的 php5apache2.dll 文件，路径一定要准确。<br>如果要禁止目录浏览，查找并定位到下面这几行：<br><br>Options Indexes FollowSymLinks <br>去掉几行注释下面进跟着的一行的 Indexes 即可，修改后：<br>Options FollowSymLinks<br><br>　　OK，保存 httpd.conf 文件后重起 Apache 服务器。<br><br>写个PHP测试文件～OK～！<br><br>3、安装mysql-5.0.0-alpha-win，一路NEXT～～ok啦！</div>
<img src ="http://www.phpweblog.net/sosopro/aggbug/1232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2007-05-21 04:23 <a href="http://www.phpweblog.net/sosopro/archive/2007/05/21/1232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为什么说PHPer是草根开发者</title><link>http://www.phpweblog.net/sosopro/archive/2006/11/16/516.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Thu, 16 Nov 2006 09:02:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2006/11/16/516.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/516.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2006/11/16/516.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/516.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/516.html</trackback:ping><description><![CDATA[
		<span style="FONT-SIZE: 13px">原文连接：<a href="http://blog.chinaunix.net/u/2190/showart.php?id=199674" target="_blank"><font color="#000000">http://blog.chinaunix.net/u/2190/showart.php?id=199674</font></a><br /><br /><br />开篇注释：以下文字并没有非常多的技术词汇，所以只要对PHP感兴趣的人都可以看看。<br /><br />PHPer是草根吗？<br /><br />从PHP诞生之日起，PHP就开始在Web应用方面为广大的程序员服务。同时，作为针对Web开发量身定制的脚本语言，PHP一直秉承简单、开源的思想，这也使得PHP得以快速的发展，并且大力地推动Web2.0的出现与发展。但是，长期以来，PHPer（PHP Programmers）被认为是处于草根阶层的程序员，被认为是技术含量少，层次低的程序员。这点在国内尤其突出。<br /><br />记得一个技术主管说过这样一个事情。他给一个程序员分配了PHP的开发任务，没想到那个程序员居然说：“我是学Java出身的，你让我去写PHP，你这不是在贬低我吗？”。这件事情给我印象很深、触动也很大。虽然这不能代码大部分程序员的看法，但是这么认为的人应该不少。还有人说，现在如果是大型的政府项目，PHP是肯定不会被列入考虑的范围之内的。<br /><br />那么为什么PHPer会被认为是草根阶层，是因为它很简单，人人都可以学会，所以没什么难度吗？我以前也是这么认为。PHP入门很快，处理文件，数据，远程连接，网络编程都非常方便，官方也有这样的说法：PHP学习的成本很低，所以你容易去使用它。这个想法也是普遍的，甚至大部分的PHPer自己都这样认为。<br /><br />说到这里，我想大家就会想到我为什么要写这些文字。因为一年多的PHP推广工作让我了解到许许多多的使用PHP的公司的大概情况。在这些过程中我慢慢体会到其中的根本原因。这里我说是根本原因虽然是个人的看法，但是我觉得事实就是如此。<br /><br />那么为什么PHPer会被看成草根阶层，根本原因是PHPer所作的事情（通过代码实现）的绝大部分都是表现层的东西，这个熟悉PHP的人都知道。当然也会有PHP会说他用MVC结构编写的某某框架具备的如何如何的功能。但是这些还是表现层。所以只会处理表现层的程序员就被看成草根阶层了。事实上也是如此，因为这种情况下PHP确实很难构造大型的应用。<br /><br />这就找到原因了，不是的。为什么PHPer总是在负责表现层的东西呢。答案是底层的数据处理（Web应用就是数据存储和查找）我们一般不去触及！好，那么说到这里有些人可能已经想到了，那不就是数据库吗！对，就是数据库！让PHPer一直当草根的元凶就是数据库。为什么？<br /><br />因为目前流行的web架构中，前端是负载均衡系统，中间是web服务器，后面是数据库服务器。所以，大部分PHPer工作在Web服务器层面。因为数据库已经很好地为我们组织数据了。所以PHP中没有太多的算法，而且大家潜意识下也觉得不需要，更何况会影响性能。<br /><br />这种情况下，PHPer就成为了数据库使用者，他总是在操作数据库。而不是在做程序。一个最简单的PHP脚本就是，连接数据库，把数据取出来，然后用命令输出到浏览器。整个过程不超过10行代码。给人的感觉就是太简单了。没有任何技术含量。为什么了，因为数据处理部分都已经被数据库做完了。尤其是MySQL的使用！MySQL是免费的，所以大多数程序员可以自由地使用它，另外MySQL的速度够快了，所以做个PHP应用程序非常的简单。这就相当于给你枪以后你觉得没有必要学习武功一样。当然，我不是说枪没有武工好。而是说，枪的出现，小孩都可以轻松便捷地杀人了。<br /><br />我们再详细说说为什么是数据库！这里我说一个例子。我去过北京一家非常著名的网站，当时我们还有一个比较资深的PHP程序员在那说些系统架构的事情。我记得当时那个程序员问大家一个数据结构中的算法问题的时候，全场没有一个人能答得出来（包括我）。然后那个程序员就开始给大家讲些很基础的数据结构的东西了。让我一下子回想到大学时候学的数据结构课。而这些基础的数据排序、查找、传递的问题在其他高级语言（比如C）是非常普遍的。但是在PHP没有！ PHPchina.com的论坛也有个板块叫PHP的数据结构和算法。这个板块的帖子也是寥寥无几。<br /><br />仔细回想下，目前网络上大家讨论的最多的是两个方面的问题。一个是PHP的类的使用（处理过程的封装），还有一个是开发框架问题。但是我们仔细分析的话，发现这些所谓的PHP中比较复杂的概念里面没有数据处理！为什么，有数据库！用一个Adodb或者PHP5的PDO就可以搞定了！真的搞定了吗？不是，这些无非是在连接数据库，没有数据处理！所以PHPer似乎就没有什么可以拿出台面上的东西。<br /><br />再说一个具体的代码问题，无级分类。这个概念我想大家都不会陌生了吧。我见过两种处理方式。第一个是地道的PHPer的处理方式，也是目前比较流行的。就是用数据库来处理。而且字段很少，只需要加个父类的字段并加以判断就行了。而且这个方法很实用。效率也高！但是这个不是数据处理的范畴了，而是数据库的查找！<br /><br />第二个是C程序员用PHP写出来的，他把所有的分类信息都从数据库取出来，然后用数据结构算法进行排列分布，然后输出。<br /><br />这里我们不对这两种方式的效率进行对比，我想大家都有各自的想法。但是我想说明一个问题，就是这两种做法的本质的区别。PHPer习惯性地用数据库来处理，而且有很巧的处理方式，效率也很高！这种方式就是数据库查询。而第二种方法是比较有特点的。他认为数据库就是存放数据的地方，具体的逻辑处理还要靠自己的逻辑。<br /><br />因此，结论是第二种方法的使用者觉得自己强些，因为数据的逻辑是他组织的！并且觉得PHPer的那种做法无非就是会查询数据库罢了。所以他认为PHPer是草根级的，只懂得操作数据库和排列页面（smarty搞搞那种）。<br /><br />说到这里，我想大家都已经回忆了不少自己平时用PHP做开发的经历了吧，是否发现大家确实都在操作数据库呢。<br /><br />那么我们来讨论下这个问题。数据库不好吗？为什么我一直用数据库处理数据都没有问题。我要说的是数据库是有问题的，而且有很大的问题！当然这里我并不是说不能用数据库，也不是在贬低数据库的性能。而是，我们没有充分认识到数据库所起到的作用。<br /><br />我的想法源起于这样一个事情，有一次一个网站的技术总监问我，为什么他们的网站那么慢，要怎么办。当时，我的MSN里Zend总部的工程师正好在线，我就问他PHP响应比较慢了，怎么办？他当时直接告诉我，数据库问题！肯定是数据库没有优化设计好。所以，我没有给那个技术总监确切的答案了，因为他们的数据库设计我们是不能涉及的。所以就给了大概的数据库优化的建议。这样的事情屡次发生，我就开始怀疑，为什么Zend总部的工程师每次都跟我说是数据库的问题呢，难道我们不能从PHP层面来解决这个问题吗？答案是不能！因为PHP目前的运行速度已经是很快了，通过Zend的性能分析也能看到一个用户的点击，PHP的运行时间只有10%不到，那PHP在干吗？它在等。等数据库的查询结果。这个方面在目前的PHP产品中有了很大的提高，那就是Caching和网页静态化两个方案。Caching可能大家会比较陌生，但是网也静态化现在连PHP产品的用户都非常清楚了。速度快、容易被搜索到等等，好处不言而喻。开玩笑地说，现在网站的主页实现网页静态化只需要硬盘足够大。J至于Caching就比较复杂些，也是大多数PHPer感到头疼的地方。甚至于有些人会用C来实现。因为Caching中的数据有效期验证、查找、提取、更新等等都是比较难处理。当然，也有人会用数据库来处理 Caching问题。<br /><br />所以，当访问量激增的时候，PHP架构的网站会出现的很多问题都因数据库而起。数据库的同步问题还不算什么。关键是数据库的响应速度会有指数级的降低。这个问题我在10月23号LAMP发布会的时候问过MySQL的副总裁。他当时也没有给我比较完美的答案（这也我的意料之中），因为数据库总会有瓶颈的，除非是神仙数据库，哈哈！<br /><br />这里有个题外话，LAMP大会的时候我跟Yahoo的一个技术高管聊的时候，我问他Yahoo在选择MySQL还是Oracle的时候是怎么考虑，他的答案令我非常惊讶。他说大部分的时候我们是会用MySQL的，因为它的性能已经达到我们的要求。但是什么时候我们会选用Oracle呢，就是当我们需要存储收费用户的数据的时候。我就问为什么，难道Oracle比MySQL稳定吗？他说，这个倒没有特别考虑。关键是如果使用Oracle的话，当出现问题的时候我们可以找到负责人，Oracle会负责事故的处理，但是如果用MySQL的话，我们找谁去？<br /><br />所以，我们对数据库的看法应该纠正过来，就是说数据库不是万能的。如果有实力的话自己开发数据库。听说Google就是那样的。<br /><br />那么我们怎么看待数据库呢？我个人的理解是数据库只是用来降低开发成本的手段。因为采用数据库以后我们不需要考虑数据的存储，尤其是排序和查找。但是这会带来什么问题呢？就是当业务膨胀的时候，数据库就成为瓶颈了！这个时候问题就会非常棘手！因为这个是底层的数据处理。牵一发而动全身。<br /><br />所以我认为正确的观点是，数据库是一个数据备份机！怎么理解，我们只需要保证数据的存储有效性就行了。而这本来就是数据库的核心功能，只不过因为数据库的方便的排序等功能让大家把过多的处理都交给数据库来操作了。一个用户的点击PHP就把一大堆的任务交给数据库，然后把结果排列下给用户就完事了。这对数据库是不公平的！也是因此大家开始抱怨数据库的性能了。<br /><br />针对这个观点，我们再举个例子，有一次我去拜访一个大型的网络公司（基本上国内只要上过互联网的都知道），他们使用PHP很少，但是我了解到他们其它业务是怎么使用数据库。他们自豪地跟我介绍说他们在数据库的外围有个第二数据库（我这里起名叫第二数据库）。为什么叫第二数据库呢，原来它是一个缓存系统。那么开发工程师怎么去这个缓存系统获取数据呢？那个技术总监自豪地说，他们这个缓存系统由SQL查询语句！我当时很惊讶，但是后来想想确实需要这个。因为当你的缓存系统达到一定量级的时候从缓存获取数据都非常复杂，干脆写个SQL查询语句让缓存系统分析、处理并返回数据。而且他们告诉我，在他们那里，就算是用PHP的话也是让PHP去那个缓存系统读取数据。<br /><br />所以说，如果你能处理好这样的问题的话，把数据存放在数据库，然后数据库只起到备份的作用。然后你用自己的中间层来处理分析数据，效果是90%以上的用户访问不访问数据库。有人就会说了，这不就类似连接池的东西吗？是的！因为数据库的瓶颈是无法解决的，我们只能在Web服务器和数据库中间加个中间层来做缓冲。<br /><br />可能大家会说了，切，这个我们早就知道了！那好，这里我要说的是它引发的两点思考：<br /><br />第一， 有些语言已经有连接池技术的基础上，那些程序员可以方便地使用连接池而构建大型应用。那么如果他们认为PHPer只会是用数据库，那么我们是不是可以说他们只会是用连接池呢？连接池和数据库在这个概念上有何区别？<br /><br />第二，当PHPer开始构建自己的缓存系统的时候，他是不是突破了PHPer只会是用数据库的层次？因为他参与了数据逻辑的处理工作。那么他还是草根吗？<br /><br />最后，新一代的PHPer是草根吗？</span>
		<br />
<img src ="http://www.phpweblog.net/sosopro/aggbug/516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2006-11-16 17:02 <a href="http://www.phpweblog.net/sosopro/archive/2006/11/16/516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>php5在ubuntu下的安装！</title><link>http://www.phpweblog.net/sosopro/archive/2006/08/08/291.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Tue, 08 Aug 2006 07:41:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2006/08/08/291.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/291.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2006/08/08/291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/291.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/291.html</trackback:ping><description><![CDATA[tar -zxvf php-4.2.3.tar.gz <br />mv php-4.2.3.tar.gz php <br />cd php <br />./configure
--prefix=/usr/local/php --with-apxs=/usr/local/apache/bin/apxs
--with-config-file-path=/usr/local/lib --enable-track-vars --with-xml
--with-mysql <br />make <br />make install <br />cp php.ini-dist /usr/local/lib/php.ini 
<p>以dso方式安装php至/usr/local/php 设置配置文件目录为/usr/local/lib 开启mysql,xml支持 <br /></p>这要注意：－－with－apxs选项如果是apache2那么要改为－－with－apxs2<br />同时在ubuntu下需要安装flex。xml需要安装libxml2，都是apt安装了<br /><br />还需要mysql.h文件,这个东西如果你的mysql是apt安装的，估计找不到，你可以到mysql的官方网站去，下一个libmysqlclient，就ok了<br /><br />最后，一定要注意权限问题：比如说你的网帐目录是/opt/apache2/htdocs，那么一定要修改这个目录和该目录下文件的权限，不然linux不让你执行！<br /><p><br /></p><p><br /></p><img src ="http://www.phpweblog.net/sosopro/aggbug/291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2006-08-08 15:41 <a href="http://www.phpweblog.net/sosopro/archive/2006/08/08/291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对php framework的期望！！！</title><link>http://www.phpweblog.net/sosopro/archive/2006/08/07/290.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Mon, 07 Aug 2006 11:08:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2006/08/07/290.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/290.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2006/08/07/290.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/290.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/290.html</trackback:ping><description><![CDATA[最近看到好多报道，IBM和ORACLE好像都要对php做出支持，当然我没用过zend公司的framework不知道好坏，IBM有eclipse，所以phper有福了。其实很长时间下来我们或许已经习惯了editplus，emacs或其他，然而有个大公司支持做IDE更好，曾经有段时间我想zend公司的工具怎么不开源免费呢？<br />至于framework，我不清楚将会给php带来什么。框架对一个语言来说是很重要的，java和.net就是有很好的框架做后盾，面向对象的思想在php里似乎不能彻底的贯彻，当然IDE＋framework肯定是可以提高开发速度的，而php目前是否最需要这个呢？在我的心目里其实是性能。<br />框架给了我们一个标准，与标准一起来到的当然是设计模式，也就是说我们的开发模式也会随之而改变。改变是好事，如果开始做的不好也不怕。但是只凭在我们实际碰到的应用中往往会遇到各种各样的瓶颈，php的社区里已经解决了许多问题，当然也继续产生了很多问题，以后我们在一个标准化下、一个framework下能不能象以前哪样有创造性的解决问题吗？<br />我期望php framework的出现，好处大家不说都知道，但我期望不要为了框架的诞生和应用去修改php的本质，不要让语言去适应框架，至少在框架非常成熟之前不要这样做？<br /><img src ="http://www.phpweblog.net/sosopro/aggbug/290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2006-08-07 19:08 <a href="http://www.phpweblog.net/sosopro/archive/2006/08/07/290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这里人真少，php没有用户吗？还是看了就走了？</title><link>http://www.phpweblog.net/sosopro/archive/2006/08/05/278.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Sat, 05 Aug 2006 02:51:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2006/08/05/278.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/278.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2006/08/05/278.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/278.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/278.html</trackback:ping><description><![CDATA[不知道为什么，这里好像没几个人发表文章，但是我知道其实用php的人非常多，我发了几篇，但是都是linux或unix下的技术，因为我刚接触这两个系统没多久，而且我想深入研究php在这2个系统上的性能，相比cnblogs，或者blogjava，这里都很少人，不过我不担心什么。也许是没有写关于php更详细的技术文章吧，我看到紫雨轩发了好几篇，我也学了不少，真想把这里的人气搞上去，可惜我要仔细研究php后才会写，只要园里不关phpweblog，我会一直写下去的！！！<br />大家努力！！<br />希望更多人关注这里！！！<br /><img src ="http://www.phpweblog.net/sosopro/aggbug/278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2006-08-05 10:51 <a href="http://www.phpweblog.net/sosopro/archive/2006/08/05/278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>找到原因了，好久不用的后果，落后了！！！</title><link>http://www.phpweblog.net/sosopro/archive/2006/06/28/176.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Wed, 28 Jun 2006 08:17:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2006/06/28/176.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/176.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2006/06/28/176.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/176.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/176.html</trackback:ping><description><![CDATA[register_globals = Off 这个是php.ini里的配置项目，自从4.0后就设置为off了把它改成on就可以了，<br />唉，好久没用php竟然落后到这个地步。都怪ms，搞个什么.net让我在里面耗了好多时间，最后发现跟以前一样，用起好多东西来居然还是那么模糊，反正能工作就行。不能开源吗?<br /><img src ="http://www.phpweblog.net/sosopro/aggbug/176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2006-06-28 16:17 <a href="http://www.phpweblog.net/sosopro/archive/2006/06/28/176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>奇怪了哈！！我哪里没配置好？？</title><link>http://www.phpweblog.net/sosopro/archive/2006/06/27/174.html</link><dc:creator>sosopro</dc:creator><author>sosopro</author><pubDate>Tue, 27 Jun 2006 05:23:00 GMT</pubDate><guid>http://www.phpweblog.net/sosopro/archive/2006/06/27/174.html</guid><wfw:comment>http://www.phpweblog.net/sosopro/comments/174.html</wfw:comment><comments>http://www.phpweblog.net/sosopro/archive/2006/06/27/174.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.phpweblog.net/sosopro/comments/commentRss/174.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/sosopro/services/trackbacks/174.html</trackback:ping><description><![CDATA[大家看下面简单的一个form提交<br />这里是html文件<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;title&gt;无标题文档&lt;/title&gt;<br />&lt;/head&gt;<br /><br />&lt;body&gt;<br />&lt;form name="form1" method="post" action="a.php"&gt;<br />  &lt;input name="namea" type="text"&gt;<br />  &lt;input type="submit" name="Submit" value="提交"&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br />a.php<br />&lt;?php<br />echo $HTTP_POST_VARS[namea];<br />echo $namea;<br />?&gt;<br />echo $namea不会输出任何东西<br />echo $HTTP_POST_VARS[namea]就会<br />哪里的问题呢？<br /><br /><br /><img src ="http://www.phpweblog.net/sosopro/aggbug/174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/sosopro/" target="_blank">sosopro</a> 2006-06-27 13:23 <a href="http://www.phpweblog.net/sosopro/archive/2006/06/27/174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>