首页 > phper

PHP开发环境安装包

  对于已经熟悉Apache+PHP+MYSQL的安装配置的开发人员,或者是不想涉及开发而只是想建立PHP应用程序的人来说,使用Apache/PHP/MYSQL安装套件来配置PHP的WEB环境会方便不少,但是选择合适的套件还是需要的。个人把曾经使用过的,以及比较知名的安装套件总结如下:
  WAMP
  一直在用的,带有phpMyAdmin和SQLiteManager ,提供了很多Add-on插件,如PHP版本切换、ZEND OPTIMIZER 、WEBALIZER等,站长推荐!
  http://www.wampserver.com/
  TSW
  比较完整,支持PERL,FTPServer,还提供有Tomcat和wordpress插件
  http://sourceforge.net/projects/yawamp/
  GREENAMP
  国产的套件,无删除功能
  http://chin.blogchina.com
  VertrigoServ
  内置了ZendOptimizer
  http://vertrigo.sourceforge.net/
  XAMPP
  很不错,提供了丰富的插件,如perl、python、tomcat和cocoon
  http://www.apachefriends.org/de/xampp-windows.html
  WAPM
  国产的,支持Tomcat和Turck MMCahe、ZendOptimizer
  http://w.yi.org/
  Appserv
  也整合了Zend Optimizer
  http://www.appservnetwork.com/
  Apache2Triad
  包含了Perl , Python
  http://apache2triad.sourceforge.net
  EasyPHP
  安装比较简单
  http://www.easyphp.org/
  LiteWeb
  支持Perl和虚拟域名
  http://www.cmfperception.com/liteweb.html
  phpHome
  http://phphome.sourceforge.net/

阅读全文

PHP SOCKET 技术研究

  今天试着写一个 PHP 与 C 语言通过socket通讯的程序,看过PHP手册,发现有好几种方式可以建立socket 客户端.
  1、通过 fsockopen() 建立socket连接,然后用 用fputs() 发送消息,用 fgets() 接收消息。
  2、通过 socket_create() 建立 socket 连接,然后用 socket_send() or socket_write() 发送消息,用 socket_recv() or socket_read() 发送消息。
  很奇怪,我在手册上看到了这样一段话"本扩展模块是实验性的。该模块的行为,包括其函数的名称以及其它任何关于此模块的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。我们提醒您在使用本扩展模块的同时自担风险。" 看来 php4.0 socket通讯还不是完全稳定。
  今天我写的客户端要与服务端做两次通讯,我用上面这个方法都写了一个客户端程序,发现当仅仅就一次通讯的时候,也就是PHP客户端发送一次消息,然后接收返回消息,就关闭连接。这两种方法都能正确快速的实现功能,但当做两次通讯时,却有明显的差别,第一种方法第一次通讯特别快就结束了,这个我可以通过服务端的输出看出来,但是第二次通讯要等上好几分钟才能结束,我试了好几次都这样,我不太清楚我的程序哪里出错了,还是这个方式连接就是有问题,但是第二种方法做这两次通讯却很快,正确!完成的非常的。
  最后我根据 第二种情况写了一个 class

阅读全文

使用PHP的错误处理

  在web 上所有常见的错误之一就是无效的链接。一旦从其它站点上出现了无效的链接,你会重新安排你的站点。人们会将他们喜欢的站点存成书签,如果在三个月后再次访问时,仅仅发现的是'404 Not Fount '时,将不会给他们任务帮助,告诉他们如何从你的站点去查找原始的信息。让我们解决这个问题,或者至少给你的用户一个友好的帮助,一旦他们遇到'a 404' 错误时,能够得到一些痕迹。你可以创建普通的页面来报告在处理你的页面时所遇到的所有的错误。
 
  PHP 与Apache一起可以很自由地让你创建自已的出错页面,但是需要重新进行配置,并且要编少量的代码。先让我们学习配置部分。
 
  Apache的ErrorDocument指示用来指出在出现错误时Apache应重定向到哪一个文档(或URI)。它允许你为每一个你的用户可能遇到的错误代码指定一个资源。通过在你的服务器配置中增加一个ErrorDocument 404/error.php指示。这个将在用户访问一个不存在的页面时,重定向到'error.php'中,下面我们就会写出'error.php'页面。不要忘了重新启动Apache以使改动生效。
 
  接着,我们写出一个简单的error.php:
  你所请求的文件 (<?=$REDIRECT_URL?>) 在这个服务器上不存在。请查找你想要的文件从 <A HREF="/">前页</A>。
 
  现在试着读取一个在你服务器上不存在的页面,怎么样,你可以看到error.php了,它有着一个良好和友好的消息,并且还有一个到前页的链接。
 
  让我们把它扩展一下。正如你所见,我在error.php中使用了REDIRECT_URL变量。这个变量是Apache在执行了一个ErrorDocument指示时所设置的,并且给出了一种可能来找到原始的资源。在这种情况下,Apache
还设置了一些别的变量,所有的变量可以在这里找到。使用这些变量可能创建一个很好的出错页面,用于给
用户一个不错与友好的出错页面,而代替Apache给出的缺省页面。
 
  从PHP页面中输出错误
  从一个PHP页面输出错误与模拟Apache对ErrorDocument指示所做的很象,你只要简单地将用户重定向,通过使用query-string变量,而Apache则通常是设置在环境变量里面。这样就可以使用同一个出错页面来处理各种错误。下面是一个例子:
--------------------------------------------------

阅读全文

如何在自己的主页上使用PHP

  最近有很多人问我如何使用PHP的问题,就写一个PHP的初级应用教程吧。即使你对PHP一无所知,也能看得懂的~~
  1.PHP是什么?
  PHP,一种新型的CGI程序编写语言,易学易用,运行速度快,可以方便快捷地编写出功能强大,运行速度快,并可同时运行于Windows、Unix、Linux 平台的Web后台程序,内置了对文件上传、密码认证、Cookies 操作、邮件收发、 动态GIF生成等功能,PHP直接为很多数据库提供原本的连接,包括Oracle,Sybase,Postgres,Mysql,Informix,Dbase,Solid,Access 等 ,完全支持ODBC接口。PHP4.0提供了更多web server的支持,例如Zeus, Netscape Enterprise, Apache Win32 module。
 
(上面这段话是网上转来的,是不是已经看晕了……)
  总之,我的理解,PHP是一种动态WEB脚本语言。就这么简单啦.... 比如我这里的论坛系统,全部都是php程序的。
 
  2.到哪里寻找PHP源代码?
  我们当然不能指望每个人都能独立编写PHP程序。作为普通的网页制作者,我们可以使用现成的PHP程序。很多站点都提供免费的PHP源代码下载。
 
其中,最有名的就是中国站长站(http://www.chinaz.com/)。从这类站点上,我们可以找到我们需要的程序源代码。
 
  3.如何使用下载的PHP源代码?
  源代码下载下来了,有人就不知道该怎么用。下面我分步来说明。
 
  (1)查看代码使用说明:
  一般下载来的程序,都有readme文件,告诉你如何安装使用本程序。有些程序只需将所有文件上传,就可以使用。有些程序需要运行install.php进行安装,这要看具体情况。
 
  (2)调试程序有两种方法。一种是在自己的机器上构建一个本地调试环境进行调试,另一种是将程序上传到主页服务器上进行调试。
 
  本地调试,一般使用apache,php和mysql三种软件构建本地调试环境。由于安装这三个软件,需要修改注册表和其他很多设置,对初学者来说太过复杂,我推荐使用phptraid这个软件(下载地址:
1)PHP Server Builder for windows 1.3
包含:
Apache 2.0.47
PHP 4.3.3
Mysql 4.0.16
PHPMyadmin 2.5.4
Zend Optimizer 2.1.0
官方网站: http://www.myferly.com/
下载地址: http://www.myferly.com/download/1.3/window...ws/VM/psb13.exe

阅读全文

PHP动态图像的创建

只要安装一些第三方的库文件并具有一定的几何知识,就可以利用PHP来创建和处理图像了。利用PHP创建动态图像是相当容易的一件事情。下面,笔者将详细介绍如何实现。
 
在使用基本的图像创建函数之前,需要安装GD库文件。如果要使用与JPEG有关的图像创建函数,还需要安装jpeg-6b,如果要在图像中使用Type 1型字体,则必须安装t1lib。
 
在建立图像创建环境之前,还需要做一些准备工作。首先,安装t1lib接着安装jpeg-6b,然后再安装GD库文件。在安装时一定要按这里给定的顺序进行安装,因为在编译GD入库时会用到jpeg-6b,如果没有安装jpeg-6b,在编译时就会出错。
 
在安装完这三个组件后,还需要重新配置一次PHP,这也是你对采用DSO方式安装PHP感到庆幸的地方之一。运行make clean,然后在当前的配置中添加下面的内容:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
完成添加后执行make命令,然后再执行make install命令,重新启动Apache后运行phpinfo()来检查一下新的设置是否生效了。现在,我们就可以开始图像创建工作了。
 
根据所安装的GD库文件的版本将决定你是否能创建GIF或PNG格式的图形文件。如果安装的是gd-1.6或以前的版本,可以使用GIF格式的文件但不能创建PNG格式,如果安装的是gd-1.6以后的版本,可以创建PNG文件但不能创建GIF格式的文件。
 
创建一幅简单的图像也需要用到许多的函数,我们将一步一步地进行说明。
 
在下面的例子中,我们将创建一个PNG格式的图像文件,下面的代码是一个包含所创建的图像的MIME类型的头部: <? header ("Content-type: image/png");
使用ImageCreate()创建一个代表空白图像的变量,这个函数要求以像素为单位的图像大小的参数,其格式是ImageCreate(x_size, y_size)。如果要创建一个大小为250×250的图像,就可以使用下面的语句: $newImg = ImageCreate(250,250);
由于图像还是空白的,因此你可能会希望用一些彩色来填充它。你需要首先使用ImageColorAllocate()函数用其RGB值为这种颜色指定一个名字,这一函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如果要定义天蓝色,可以使用如下的语句: $skyblue = ImageColorAllocate($newImg,136,193,255);
接下来,需要使用ImageFill()函数用这种颜色填充这个图像,ImageFill()函数有几个版本,例如ImageFillRectangle()、ImageFillPolygon()等。为简单起见,我们通过如下的格式使用ImageFill()函数:

阅读全文

php调用mysql存储过程和函数的方法

存储过程和函数是MySql5.0刚刚引入的。关于这方面的操作在PHP里面没有直接的支持。但是由于Mysql PHP API的设计,使得我们可以在以前的PHP版本中的mysql php api中支持存储过程和函数的调用。
在php中调用存储过程和函数。
   1。调用存储过程的方法。
     a。如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,
     一个php变量(也可以不必,只是没有php变量时,没有办法进行动态输入),一个Mysql
       变量。
     b。如果存储过程有OUT变量,声明一个Mysql变量。
       mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句。
       入set @mysqlvar=$phpvar ;
     c。使用mysql_query()/mysql_db_query()执行mysql 变量声明语句。
       mysql_query("set @mysqlvar【=$pbpvar】");
       这样,在mysql服务器里面就有一个变量,@mysqlar。如果时IN参数,那么其值可以有phpar传入。
     d。
 如果时存储过程。
         1。执行 call procedure()语句。
           也就是mysql_query("call proceduer([var1]...)");
         2. 如果有返回值,执行select  @ar,返回执行结果。
            mysql_query("select @var)"
            接下来的操作就和php执行一般的mysql语句一样了。可以通过mydql_fetch_row()等函数获得结果。
         如果时函数。
 直接执行 select function() 就可以了。

阅读全文

怎样防止从Cache中读取WML页面

当WML页面下载到WAP设备后,它将保存在WAP设备内存中一段时间,直到这个时间过期。在这之后,页面将从服务器下载,而不是从WAP设备的缓存读取。这个过程被称做Cache。
但是有些时候不想让页面从缓存中读取,而是从服务器端读取。一个典型的例子就是当服务器的内容不断在更新的时候,通过在HTTP头中加入一定的cache信息,来告诉WAP设备该页面将不存储在缓存中。
可以在服务器端生成HTTP头,或者使用PHP、ASP、Perl或者其他服务端开发语言。这一行不能被包括在页面里,既然是HTTP的信息头,就不是WML元素。
对于静态页面,或许没有使用服务器端脚本语言,许多浏览器支持META标签来控制浏览器的Cache。看本部分的最后的例子。
将下面代码加入到HTTP头中,页面将马上过期:
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: DD. month YYYY HH:MM:SS GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
第一行告诉微型浏览器,页面已经过期一段时间了。第二行告诉浏览器页面最后一次修改的时间。DD应该换成当天的日期,month YY HH MM SS等等类推。第三行和第四行有同样的效果。告诉浏览器页面不被Cache(第三行适用于 HTTP 1.1,第四行适用于HTTP 1.0)。
下面的是PHP的一个例子:

阅读全文