一切福田,不離方寸,從心而覓,感無不通。

Category Archives: PHP

PHP:Deprecated: Function set_magic_quotes_runtime() is deprecated 错误

  在安装PHPCMS出现Deprecated: Function set_magic_quotes_runtime() is deprecated 错误,查了一下网络及资料发现是PHP5.3和PHP6.0之后移除了set_magic_quotes_runtime()函数。   set_magic_quotes_runtime(0)函数作用解释 在php.ini的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。 为了使自己的程序不管服务器是什么设置都能正常执行。可以在程序开始用get_magic_quotes_runtime检测设置状态秋决定是否要手工处理,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉。 magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的’”/加上反斜线。可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(’)、双引号(”)、反斜线(/)与 NUL(NULL 字符)。   解决办法: //@set_magic_quotes_runtime(0); ini_set(“magic_quotes_runtime”,0);   就是用ini_set()办法替代原有的set_magic_quotes_runtime语法。 转自:http://blog.csdn.net/nstwolf/article/details/5806616  

龙生   19 Feb 2013
View Details

Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程

说到PHP环境配置与安装,通常以Apache搭载PHP配置为主,随着PHP版本不断更新,对Windows IIS平台的支持也越来越好,在Windows IIS平台上配置安装PHP环境也越来越方便。 在完成Windows 7上搭建Apache+PHP+Mysql环境搭建后,我在Windows 7 IIS7平台上对PHP5.2和PHP5.3进行了配置安装,PHP5.3之前版本在Windows IIS平台上的PHP配置方式主要以ISAPI方式进行,而PHP5.3支持IIS以FastCgi方式运行PHP,这两个PHP5版本的配置安装还是有不小的区别,下面详细介绍ISAPI和FastCgi两种方式在IIS上进行PHP配置的方法。 准备工作 在完成IIS上进行PHP5安装配置工作之前,首先需要下载PHP5.2和PHP5.3,PHP5.3以php-5.3.2-Win32-VC9-x86为准。 Windows7 IIS7安装 在进行IIS7 PHP安装配置之前,首先需要安装IIS7,Windows7默认并没有安装IIS,安装过程如下: 首先进入控制面板,点击程序和功能,再点击左侧打开和关闭Windows功能,勾选Internet Information Services可承载的Web核心,确定安装。 在完成安装后,在勾选Internet信息服务,选择安装必要的IIS功能,注意由于在配置PHP5.2和PHP5.3时,IIS7中是以ISAPI和FastCgi方式配置PHP的,所以Cgi和ISAPI扩展和ISAPI筛选器务必勾选(此处由于我首先以ISAPI方式配置PHP5.2,我没有勾选Cgi),如图: 安装IIS7 在完成Windows7 IIS7的安装后,即可在控制面板中的管理工具中看到Internet信息服务管理器选项。 ISAPI方式 第一步:php.ini配置 解压php-5.2.13-Win32-VC6-x86.zip,重命名为php52iis,将其复制到C盘根目录下,将php.ini-list文件名更改为php.ini,打开php.ini进行配置,注意extension_dir的目录指向必须准确,即 extension_dir = "C:/php52iis/ext" 另外在PHP5.2版本中没有date.timezone选项,所以无需设置。 在完成PHP5.2中php.ini的配置工作后,将其复制至C:WINDOWS目录下,同时将PHP52iis目录下的libmcrypt.dll,libmysql.dll,php5ts.dll三个文件到C:/windows/System32目录下。 第二步:以ISAPI方式配置PHP5.2 打开IIS,选择网站下的Default Web Site中的ISAPI筛选器进行PHP配置工作,即 添加ISAPI筛选器,选择PHP相应的DLL文件然后选择处理程序映射,进行添加脚本映射操作,即 在完成上述IIS7的PHP5配置后,有需要说明一下,默认IIS7下的网站,其绑定的端口为80端口,网站目录为%SystemDrive%inetpubwwwroot,如果你向我一样在此之前安装配置了Apache+PHP的环境,则需要修改默认网站绑定的端口及网站目录,如将80端口改为8080,网站目录指向D:PHPWeb。或者添加一个新网站,即先添加应用程序池,再添加一个网站。   添加默认文档 在完成新网站添加后,请确保处理程序映射中有添加的脚本映射,如果没有,请重复添加脚本映射操作即可。 第三步:重启IIS7服务器 在D:PHPWeb目录下新建一个index.php文件,内容如下 <? phpinfo(); ?> 在游览器中输入http://localhost:8080/,查看PHP5.2配置信息。 至此在Windows7 IIS7上安装配置PHP5.2就算完成了。   FastCgi方式 在Windows7 IIS7上配置PHP5.3,主要以FastCgi方式进行配置,大体上与PHP5.2的配置基本一样。首先解压php-5.3.2-Win32-VC9-x86,重命名为php53iis并将其复制到C盘根目录。 第一步:添加网站 具体添加过程请参考IIS PHP5.2的配置。 第二步:添加FastCgi模块映射 点击处理程序映射,进行添加模块操作,即 配置IIS以FastCgi方式运行PHP5.3 第三步:php.ini配置 首先将php.ini-development重命名为php.ini,并将 fastcgi.impersonate=1 默认为0,如果使用IIS,你需要开启 cgi.fix_pathinfo=1 cgi.force_redirect=0 默认开启,如果你使用IIS,可以将其关闭 其次指定extension_dir目录和date.timezone,即 extension_dir = "C:/php53iis/ext" date.timezone= Asia/Shanghai 其他PHP.INI配置与PHP5.2的配置一样,区别在于,在Windows7 IIS7上配置安装PHP时,并不需要将php.ini及其他文件复制到C:/windows及C:/windows/System32目录下,简单很多 第四步:重启IIS7服务器 同时访问http://localhost:8080/即可。 FastCGI进程意外退出如何解决? 在使用Windows7 IIS7进行PHP配置安装过程中,如果PHP配置不正确,会出现FastCGI进程意外退出出错信息,此时你可以在DOS下使用 C:php53iisphp.exe -v 进行调试查看,一般情况下会将PHP配置的错误信息报出,你只要根据此信息修改相关PHP配置即可。 至此在Windows7 IIS7平台上进行PHP5.2和PHP5.3的配置安装工作就介绍完了,应该讲随着PHP版本的提高,PHP的配置工作也越来越简单化。

龙生   19 Feb 2013
View Details

运行php出现”Error Description: 由于应用程序配置不正确”解决方法

 环境: windows server 2003 、 iis6.0 、 php5.3.2 、 fcgi_1.5_x86 在winodws server 2003 上利用iis6.0搭建web服务器,采用php-cgi模式运行php脚本,提示如下错误!错误提示: FastCGI ErrorThe FastCGI Handler was unable to process the request.——————————————————————————– Error Details: Error Number: 14001 (0x800736b1).Error Description: 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。HTTP Error 500 – Server Error.Internet Information Services (IIS) 错误可能原因: 一.没有安装.net 2.0 的框架 二.没有安装VC9运行库即VISUAL C++ 2008 解决方法:⒈安装2.0版本以上的.net Framework.net Framework下载地址:页面地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=D0E5DEA7-AC26-4AD7-B68C-FE5076BBA986软件地址:http://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe⒉安装VC9运行库即VISUAL C++ 2008,Microsoft Visual C++ 2008 Redistributable Package (x86)下载地址:页面地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn软件地址:http://download.microsoft.com/download/7/5/0/7502f4e9-1f90-4895-9259-1bde67b8b9a1/vcredist_x86.exe ⒊安装完成后重新启动iis   转自:http://www.huqiang.name/2012/05/03/archives/1678.html

龙生   24 Jul 2012
View Details

IIS6下配置fastcgi的php的教程

  FastCGI的IIS模块可以让流行的应用框架在IIS上支持FastCGI协议以提供高性能和可用性的访问服务,FastCGI面向现有的网络服务器提供高性能的CGI替代标准。具体PHP 安装方法我记录下来,其中包括出现的一个错误.环境: 操作系统:Windows 2003 Server PHP版本:PHP5.25 1.下载FastCGI For IIS6 http://www.microsoft.com/downloads/details.aspx?FamilyID=2d481579-9a7c-4632-b6e6-dee9097f9dc5&displaylang=en 下载之后,双击运行进行安装. 2.下载PHP5.25 Windows版 http://www.php.net 下载.zip格式的版本,下载后解压至D:\PHP目录,并给IIS启动帐户组或用户赋予读取和运行权限. 3.注册PHP到FastCGI 在命令行下运行 cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"D:\PHP\php-cgi.exe" fcgiconfig.js 默认存放目录是:C:\WINDOWS\system32\inetsrv 4.设置 将D:\PHP\php.ini-recommended重命名为为D:\PHP\php.ini 打开D:\PHP\php.ini,修改: extension_dir = "D:\PHP\ext" fastcgi.impersonate = 1 cgi.fix_pathinfo=1 cgi.force_redirect = 0 其它根据实际需要对php.ini进行设置修改 然后执行: cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:500 cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:1000 以上两项设置最大池和响应连接数,可以根据运行机器的硬件配置、使用情况修改 一切完毕之后重启IIS,赶紧写一个测试页试一下吧. 我第一次安装时,由于为了服务器的安全我删除了wsshell命令,导致在第3步时出现了如下错误: Microsoft JScript 运行时错误: Automation 服务器不能创建对象 后通过重新注册命令:regsvr32 WSHom.ocx 问题解决 重启IIS后,打开测试页出现如下提示: FastCGI Error The FastCGI Handler was unable to process the request. ——————————————————————————-- Error Details: Error Number: 5 (0x80070005). Error Description: 拒绝访问。 HTTP Error 500 – Server Error. Internet Information Services (IIS) 这个错误是由于在解压PHP之后,没有对IIS启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决. 转自:http://www.jb51.net/article/16953.htm

龙生   24 Jul 2012
View Details

十天学会php之第十天

  学习目的:学会用PHP上传文件和发邮件 上传文件表单必须加上 enctype="multipart/form-data" 和 <input type="file" name="file"> 下面看一下代码: $f=&$HTTP_POST_FILES['file']; $dest_dir=’uploads';//设定上传目录 $dest=$dest_dir.’/'.date("ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复 $r=move_uploaded_file($f['tmp_name'],$dest); chmod($dest, 0755);//设定上传的文件的属性 上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键 至于发邮件就更加简单,可以使用mail()函数 mail("收件人地址","主题","正文","From:发件人\r\nReply-to:发件人的地址"); 不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。 好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。 十天学会PHP说到这里了,我的三大系列文章都用《十天学会》作为名字,想告诉大家的是ASP,PHP,ASP.NET入门都可以是十天,但是精通决不是十天啊,还需要大家自己去研究。 

龙生   18 May 2012
View Details

十天学会php之第九天

  学习目的:注意事项      因为我是先学ASP的,所以再做PHP的时候会发现很多地方需要适应。      1、注意不要漏了分号   2、注意不要漏了变量前的$   3、使用SESSION的时候注意不要遗漏session_start();      如果发生错误的时候,可以采用以下方法:   1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句   2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name   3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句   4、注意缩进,排除括号不区配的错误      在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。      好了,今天说到这里,明天说一下如果用PHP上传文件和发邮件。

龙生   18 May 2012
View Details

十天学会php之第八天

  学习目的:做一个分页显示 关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num 对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。 $execc="select count(*) from tablename "; $resultc=mysql_query($execc); $rsc=mysql_fetch_array($resultc); $num=$rsc[0]; 这样可以得到记录总数 ceil($num/10))如果一页10记录的话,这个就是总的页数 所以可以这么写 if(empty($_GET['page'])) { $page=0; } else { $page=$_GET['page']; if($page<0)$page=0; if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1 } 这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10"; //一页是10记录的 最后我们需要做的就是几个连接: <a href="xxx.php?page=0">FirstPage</a> <a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> <a href="xxx.php?page=<?=($page+1)?>">NextPage</a> <a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a> 这是一个大致的思路,大家可以想想怎么来优化?今天说到这里,明天说一下一些注意的问题。 

龙生   18 May 2012
View Details

十天学会php之第七天

  学习目的:学会SESSION的使用 SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION; 然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。 下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。 登陆表单是这样:login.php <table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg"> <tr class="tdbg"> <td colspan="2"><div align="center">Administrators Login</div></td> </tr> <tr class="tdbg"> <td><div align="center">Username</div></td> <td><div align="center"> <input name="username" type="text" id="username"> </div></td> </tr> <tr class="tdbg"> <td><div align="center">Password</div></td> <td><div align="center"> <input name="password" type="password" id="password"> </div></td> </tr> <tr class="tdbg"> <td colspan="2"><div align="center"> <input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Clear"> </div></td> 

龙生   18 May 2012
View Details

十天学会php之第六天

  学习目的:学会添加删除修改数据 mysql_query($exec); 单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句 添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1′]."',".$_POST['item1'].")"; 删除:$exec="delete from tablename where…"; 修改:$exec="update tablename set item1=’".$_POST['item1′]."' where …"; 说到这里就要说一下表单和php变量传递,如果表单中的一个 <input name="item1" type="text" id="item1"> 表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1'] 是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者’来包围字符型字段。 我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。 今天就说到这里,大家可以DOWN一个SQL语句的参考手册,再研究研究。明天继续说SESSION。

龙生   18 May 2012
View Details

十天学会php之第五天

  学习目的:学会读取数据 先看两个函数: 1、mysql_query 送出一个 query 字符串。 语法: int mysql_query(string query, int [link_identifier]); 返回值: 整数 本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。 2、mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类 本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。 看一个简单的例子: $exec="select * from user"; $result=mysql_query($exec); while($rs=mysql_fetch_object($result)) { echo "username:".$rs->username." "; } ?> 当然,表user中有一个username的字段,这就类似asp中的 当然先要连接数据库,一般我们 require_once('conn.php');而conn.php里面就是上一次说的连接数据库的代码。 小小的两条命令可以完成读取数据的工作了,今天说到这里下一次说数据的添加删除修改。 

龙生   18 May 2012
View Details