存档

‘webapp’ 分类的存档

移动webapp前端ui用哪个框架比较适合小项目?

2016年3月7日 没有评论

最近有个项目要在手机上查看报表和做一些操作,网上筛选了些移动端前端ui框架,这里收集下。

你可以对比下WeUI, FrozenUI, sui mobile, gmu, jingle, purecss, ionic, jquerymobile,bootstrap。小项目我觉得用用bootstrap,jquerymobile就足够了。由于对这块不是很熟,不敢评论,就列了下链接。

腾讯系的开源ui

WeUI

WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一。包含button、cell、dialog、 progress, toast、article、icon等各式元素。 阅读全文…

分类: webapp 标签:

10种意想不到的验证码风格设计

2011年5月4日 没有评论

众所周知,验证码就是帮助我们的网站防止计算机生成答案。今天的这10个用户体验绝佳、令人意想不到的验证码设计风格,推荐给大家。


1. QapTcha

QapTcha – 拖曳式jQuery验证码系统。作为用户,我们只需移动滚动条。

网站验证码风格

2. buttonCaptcha

这个要复杂点,需要拖动目标字母。

网站验证码风格

3. Fancy Draggable Captcha

这个很有意思,我们要解决这个小谜题,拖曳式的。
网站验证码风格

4. Ajax Fancy Captcha

又一个很奇特的,我们需要拖动提示目标物到圈中。
网站验证码风格

5. Sexy Captcha

像小孩子玩儿的拼图游戏。

6. simpleCaptcha

玩具验证码,选一个吧^_^。

网站验证码风格

7. slideLock

拖动滚动条来解锁吧。

网站验证码风格

8. Captcha PHP

动画验证码。

网站验证码风格

9. NuCaptcha

输入flash视频中的红字母就对了。

网站验证码风格

10. identiPIC

看图识字游戏。

网站验证码风格

分类: webapp 标签:

如何下载网页里面的FLASH?

2011年3月25日 1 条评论

初级篇:

想要把喜欢的FLASH贴上来,关键就是要找到这个FLASH的真实地址,而有效的FLASH地址一般都是以http://开头,以.swf结尾的,比如http://flash.cnflash.net/flash/yd/flash2060482563.swf

一般的FLASH网站播的FLASH,都没有把地址隐藏,只需在播发页面的地址栏直接复制粘贴上来就可以了。
有的论坛里的FLASH专区播放的FLASH下面会有‘全屏观看’的字样,你只需用鼠标按右键,点击属性,然后再把出现的地址复制粘贴就行了!

中级篇:

大部分的网站都不会给出真实的FLASH地址, 一般国内的网站及论坛都逃不出这个办法的魔爪~~
首先在你想下”毒”手的FLASH上观察一下,发现初级篇里的办法都不管用,这时你可在FLASH旁的空白地方按鼠标右键(注意不能在FLASH上点哦),然后点‘查看源文件’,这时会出现一个记事本的框框,再点击‘编辑’,按‘查找’,在‘查找内容’中键入‘.swf’(注意swf前有一小点),然后把找到的.swf及前面到http://的地址复制粘贴就OK了!

高级篇:

许多网站即使你找到了源文件里的swf,也不知道地址,WHY? 因为他们使用绝对路径!只在HTML里链接根目录下文件。(做网页的有点阴险吧,hoho )这个时候,简单,把SWF前的那个绝对路径复制下来,/xxx/xxx/xxx.swf 然后粘贴到这个站点后就好了。比如:www.win-club/xxx/xxx/xxx.swf
每个“/”就是一个目录。关键是看SWF文件存放在哪个目录下。一次不行,多试几次好啦~~(最笨的办法,一层目录,一层目录的粘贴复制呀。总会TRY出来的啦。

超级篇:

现在的FLASH以韩国的比较流行,但是韩国佬狡猾大大滴!我还在新加波的一些网站也遇到这种情况:他们的FLASH根本无法通过按右键的办法来打开记事本,因为你按右键后会发现没有查找源文件这一项,那么这时有两种方法:
1、在网站主页上有各个故事的小图标,鼠标指在小图标上按右键,然后按‘在新窗口中打开链接’,这时会在新窗口中播放FLASH,之后再重复第三篇高级篇中的方法就行了。
2、如按右键后无‘在新窗口中打开链接’这一项,那么就直接按左键点击小图标,这时将会弹出一个小窗口播放FLASH,这时在键盘上按ctrl+n,则将会打开一个新的窗口播放FLASH,然后再重复第三篇高级篇中的方法就行了。

上面纯属一堆废话……

想要把喜欢的Flash存到硬盘里去,最简单的办法就是先看一遍Flash,然后再到C:\Documents and Settings\用户名\Local Settings\Temporary Internet Files去找到那个.swf文件,将其拷贝到其他磁盘中去就是了

分类: webapp 标签:

CentOs5.5+Apache2.2.17+MySQL5.5.8+PHP5.3.5环境搭建

2011年3月14日 1 条评论

Linux + Apache + MySQL + PHP环境搭建

友情链接:centos5.5+nginx0.8.54+mysql5.5.8+php5.3.5 最新详细安装手册

             搭建环境:CentOs 5.5 +Apache 2.2.17+MySQL5.58+PHP5.35,使用编译安装,关闭防火墙、selinux
所须软件下载:

Apache(httpd)
www.apache.org
PHP
www.php.net
CMAKE
http://www.cmake.org/files/v2.8/cmake-2.8.3.tar.gz

假定安装包都在/tmp目录。

1.使用 yum 程序安装所需开发包

不多讲出错的问题,安装了这些库文件,基本不会有出错信息了。

2.安装MySQL 5.5.8
Mysql 5.5.8需要cmake编译工具

①安装cmake

②编译安装MySQL
先检查是否安装了MySQL

③配置MySQL
添加mysql用户,如果之前安装过mysql已经存在mysql用户,掠过此步

复制mysql配置文件:

生成mysql用户数据库和表文件:

把mysql加入到系统服务中

3.安装配置Apache
1.编译安装Apache

注意:./configure –help可以查看参数,根据实际需要配置。这里的configure后面跟的目录参数,最后不要跟/,否则有的地方目录会出现//的子目录问题。
# echo $?
显示为:0,表示编译过程中没有错误,显示其它都有错 这一步后面的编译过程都会用到,如果在这出错了,就不要MAKE了。得查找原因。

#make
#make install

2.设置Apache自启动

然后

4.编译安装PHP
PHP5.3.5的bug,需要安装 autoconf为2.13版本:

php 5.3.0 在默认状态下,已经开始支持 fastcgi了,不用再费劲再写配置参数了,如果写了,会提示错误信息,这个错误也可以忽略。
# make
提示出错
/usr/local/mysql/include/mysql/my_sys.h:964:27: error: mysql/psi/psi.h: No such file or directory
/usr/local/mysql/include/mysql/m_string.h:219:26: error: mysql/plugin.h: No such file or directory
/usr/local/mysql/include/plugin.h:51:28: 错误:mysql/services.h:没有那个文件或目录
/usr/local/mysql/include/services.h:21:39: 错误:mysql/service_my_snprintf.h:没有那个文件或目录
/usr/local/mysql/include/services.h:22:37: 错误:mysql/service_thd_alloc.h:没有那个文件或目录
/usr/local/mysql/include/services.h:23:36: 错误:mysql/service_thd_wait.h:没有那个文件或目录
/usr/local/mysql/include/services.h:24:44: 错误:mysql/service_thread_scheduler.h:没有那个文件或目录
修复MySQL的BUG
# mkdir /usr/local/mysql/include/mysql
# ln -s /usr/local/mysql/include/* /usr/local/mysql/include/mysql
# vi /usr/local/mysql/include/my_sys.h
找到
#include
修改为
#include  

# vi /usr/local/mysql/include/m_string.h
找到
#include < mysql/plugin.h>
修改为
#include # vi /usr/local/mysql/include/plugin.h
找到
#include
修改为
#include
# make clean
# make
# make install

# cp /tmp/php-5.3.5/php.ini-production /usr/local/php/etc/php.ini
# vi /usr/local/apache2/conf/httpd.conf
找到,在下面添加两行
AddHandler php5-script .php
AddType text/html .php

# vi /usr/local/apache2/htdocs/test.php
输入

在ie输入主机ip/test.php能看到phpinfo信息。

分类: webapp 标签: , , ,

apache Internal Server Error 解决方法

2011年3月11日 没有评论

今天配置nagios的时候遇到了一些麻烦.前面的步骤都一切顺利,但是修改好所有的cfg后,点击左边的菜单时总是提示Internal Server Error错误.错误如下:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

——————————————————————————–
Apache/2.0.52 (CentOS) Server at mail1.chinabank.com.cn Port 80
 
红色的提示告诉我们这个错误来自apache.检查apache的错误日志.
vi /var/log/httpd/error_log
 
Premature end of script headers: status.cgi, referer: [url]http://mail1.chinabank.com.cn/nagios/side.html[/url]

大意是不完整的HTTP头.不太懂这个什么意思.重新编译了一个apache在/usr/local/apache/然后停掉原来的httpd,启动新编译的apache,发现nagios的页面可以正常显示,看来是系统自带的apache的配置有问题.google之,网上的解释是apache启用了suexec的功能.对CGI的执行路径进行了限制.那么检查一下本机的apache是不是打开了suexec功能呢.
 
[root@mail2 ~]# httpd -V
Server version: Apache/2.0.52
Server built:   Jul 14 2007 11:53:18
Server’s Module Magic Number: 20020903:9
Architecture:   32-bit
Server compiled with….
 -D APACHE_MPM_DIR=”server/mpm/prefork”
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D HTTPD_ROOT=”/etc/httpd”
 -D SUEXEC_BIN=”/usr/sbin/suexec”
 -D DEFAULT_PIDLOG=”logs/httpd.pid”
 -D DEFAULT_SCOREBOARD=”logs/apache_runtime_status”
 -D DEFAULT_LOCKFILE=”logs/accept.lock”
 -D DEFAULT_ERRORLOG=”logs/error_log”
 -D AP_TYPES_CONFIG_FILE=”conf/mime.types”
 -D SERVER_CONFIG_FILE=”conf/httpd.conf”

看来是启用了suexec.
运行suexec -V
可以看到
[root@mail2 nagios]# suexec -V
 -D AP_DOC_ROOT=”/var/www”
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER=”apache”
 -D AP_LOG_EXEC=”/var/log/httpd/suexec.log”
 -D AP_SAFE_PATH=”/usr/local/bin:/usr/bin:/bin”
 -D AP_UID_MIN=500
 -D AP_USERDIR_SUFFIX=”public_html”

看来cgi程序只能在/var/www目录下执行.打开/var/log/httpd/suexec.log
command not in docroot (/usr/local/nagios/sbin/status.cgi)
因为我的nagios默认安装在/usr/local/nagios
所以这个cgi不允许被执行.
 
解决办法.把nagios安装到/var/www/nagios就可以了
之前我尝试过编译nagios的时候指定–with-cgidir=/var/www/cgi-bin但是发现编译好的nagios的sbin依然在/usr/local/nagios目录下.
 
编译的时候指定–prefix=/var/www/nagios,其他编译安装的选项不变.
 
如果不想重新编译,也可以把原来安装到/usr/local目录下的
nagios移动到/var/www目录下.再修改相关的配置文件.这个工程比较大.建议还是重新编译.nagios目录下的etc目录里面的所有cfg的路径都要改.可以用vi的替换功能.
编译好以后.重启nagios和apache(每次进行某服务的配置文件改动后,都重启该服务,使修改生效)
再次刷新nagios的页面.还是一样的错误.
查看/var/log/httpd/suexec.log
 directory is writable by others: (/var/www/nagios/sbin)
目录不能有写权限,修改如下:
chmod -R 755 /var/www/nagios/sbin
再刷新页面,日志中又出现
 target uid/gid (1000/1000) mismatch with directory (1001/1001) or program (1001/1001)
apache的运行用户和nagios的sbin目录的属主不匹配.
chown -R vuser.vgroup /var/www/nagios/sbin
现在好了
 
如果不修改sbin的属主,也可以切换apache的运行用户.在httpd.conf中添加如下内容(添加红色部分)
<VirtualHost *:80>
SuexecUserGroup nagios nagios
ScriptAlias /nagios/cgi-bin “/var/www/nagios/sbin”
<Directory “/var/www/nagios/sbin”>
#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName “Nagios Access”
   AuthType Basic
   AuthUserFile /var/www/nagios/etc/htpasswd.users
   Require valid-user
</Directory>
Alias /nagios “/var/www/nagios/share”
<Directory “/var/www/nagios/share”>
#  SSLRequireSSL
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   AuthName “Nagios Access”
   AuthType Basic
   AuthUserFile /var/www/nagios/etc/htpasswd.users
   Require valid-user
</Directory>
</VirtualHost>

这里一定要用virtualhost定义一个虚拟主机,否则SuexecUserGroup nagios nagios
这条语句不起作用
然后我们重启apache,呵呵,总算可以访问nagios的监控界面了
接下来的工作就是完善nagios的监控功能.
 
总结:遇到问题后.首先应该分析是什么问题,然后查找对应的日志,从日志中寻找问题的所在,对于不能理解的日志内容,可以google上查找答案.但是最后的解决方案还是得自己摸索.

分类: webapp 标签: ,

Apache的suexec特性介绍

2011年3月11日 没有评论
一、简介
suEXEC特性使得Apache可以使用与调用web服务器的用户不同的用户身份来运行CGI和SSI程序。而通常情况下,CGI或者SSI程序执行时使用和web服务器相同的用户身份。
正确运用该特性,可以减少很多因为提供用户执行私有CGI或者SSI程序所带来的安全风险。但如果配置不当的话,则可能引起很多问题,使你的计算机产生更多的安全漏洞。如果你对管理 setuid root 程序以及可能导致的安全问题不熟悉的话,我们强烈建议你不要使用suEXEC。 阅读全文…
分类: webapp 标签: ,

nginx构建高性能web站点

2011年3月10日 没有评论

这个架构基于squid、nginx和lvs等技术,从架构上对bbs进行全面优化和保护,有如下特点:

1、高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。

2、高保障度:不需考虑应用程序稳定与否、程序语言是何种、数据库是何种,都能从架构上保证稳定。

3、高可用性:对应用程序的修改达到最简化:在程序的某些地方加入清缓存的语句即可,当然还需要做页面静态化的工作和统计工作。

首先看图,这个图比较大:
nginx大型web网站架构1

这个架构的特点和一些流程的说明:

1、主域名和图片域名分离

域名分离可以使流量分离,缓存策略分离等等,好处诸多。bbs初期一定要做好规划,将图片用另外的域名独立服务,即使没有足够机器,域名也要先分开。另外,图片服务器可以使用有别于主域名的另一个域名,一个好处是可以减少读取cookie对图片服务器的压力,另一个是提高安全性,避免cookie泄露。

2、使用LVS作为前端、二级代理和数据库的访问入口

使用LVS作为入口,比其他任何一种方式都来得更优质。首先LVS的负载能力很强,因为它工作在网络协议的第4层,使用虚拟ip技术,所以它本身并不担负任何流量的处理,仅仅是一个封包转发的功能;第二,LVS的配置相对简单而且稳定,一般去调整的几率比较低,也减少了因人为等因素而出现故障;第三,LVS可以处理任何端口的负载均衡,所以它基本可以做所有服务的负载均衡和容错。在这个架构中,除了处理http的80端口之外,LVS也处理了数据库mysql的3306端口,在数据库这个应用中是采用的双机热备策略。

3、使用nginx+squid作为最前端的缓存组合

在这个架构中,是最能体现app_nginx_squid_nginx架构的优势的。在这个架构中的bbs运行在缓存上,用户每发布一张帖子,都需要使用purge指令清除该帖子的缓存,如果是squid在最前端,那么每次发布一张帖子,都需要在所有的squid中调用purge指令,这样在机器比较多的时候,purge将成为一个巨大的压力。

所以在这里将nginx放在最前端并使用手工url_hash的方式分流,将经常需要purge的帖子页面和列表页面按一个url对应一台squid的策略,分布到各台squid上,并提供了一台或一组backup的squid,个别squid出现异常时将自动使用backup的机器继续提供一段时间的服务直到其正常。在这样的架构下,purge就不再是关键问题,因为一个url只会对应到一台机器上,所以purge的时候,后端app_server找到对应的机器就可以了。

可以看到在前端中还有一台nginx(purge)的机器,这台机器是专用于purge的,只要发送purge指令和需要清除的url到这台机器,就可以找到相应的服务器并清除缓存了。另外,purge时还需要清理backup机器上的缓存,所以无论前端机器增加到多少,purge指令只会在2台机器上执行,如果backup机器使用到2-3台,purge指令就会在3-4台机器上执行,仍然在可接受范围之内。

nginx作为前端,另有的好处:

1/使用nginx的日志统计点击量非常方便
2/nginx也可作为缓存,一般可以直接负责favicon.ico和logo等固定的小图片

nginx大型web网站架构

4、基于nginx的中层代理

前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多。

这个架构和app_squid架构的区别,也是关键点就是:加入了一级中层代理,中层代理的好处实在太多了:
1、gzip压缩
压缩可以通过nginx做,这样,后台应用服务器不管是apache、resin、lighttpd甚至iis或其他古怪服务器,都不用考虑压缩的功能问题。

2、负载均衡和故障屏蔽
nginx可以作为负载均衡代理使用,并有故障屏蔽功能,这样,根据目录甚至一个正则表达式来制定负载均衡策略变成了小case。

3、方便的运维管理,在各种情况下可以灵活制订方案。
例如,如果有人用轻量级的ddos穿透squid进行攻击,可以在中层代理想办法处理掉;访问量和后台负载突变时,可以随时把一个域名或一个目录的请求扔入二级cache服务器;可以很容易地控制no-cache和expires等header。等等功能。。。

4、权限清晰
这台机器就是不写程序的维护人员负责,程序员一般不需要管理这台机器,这样假如出现故障,很容易能找到正确的人。
对于应用服务器和数据库服务器,最好是从维护人员的视线中消失,我的目标是,这些服务只要能跑得起来就可以了,其它的事情全部可以在外部处理掉。

在这个架构中,假如后端的app_server上把帖子页和列表页直接生成了静态页面,那么使用中层代理再做一次url_hash,将可以解决后端app_server的硬盘容量的压力,但是如果使用到url_hash的话,那做容错就相对麻烦了。所以建议不要采用生成静态页的方式,后端的压力一般不会非常的大,所以没有必要生成静态页。假如前端squid的命中率实在太低下,造成大量穿透,可以考虑使用二级代理暂顶。

5、基于LVS的数据库双机热备

在这个架构中,因为大量的并发和访问量都由前端的缓存处理掉了,所以后端的mysql主要压力来自于数据的写入,所以压力并不是非常大,并且负载比较稳定,一般不会随着访问量上升而提高过快,估计目前一台64位的机器,加满内存并使用高速的硬盘,前端负载数亿访问量时数据库都不会出现性能问题。在数据库这方面应主要考虑故障恢复,因为数据库崩溃的话,按照一般使用备份恢复的做法,耗时很长而且难免丢失数据,是很棘手的问题。使用双机热备的方案,出现故障时首先可由一台时刻同步着的备用数据库即刻充当主数据库,然后卸下的数据库可以有充分的时间对其进行维修,所以是个很安全有效的办法。

当然,数据库的优化还是要细心做的

细心地调一遍,性能会好很多。

6、图片服务器

图片服务器我在这个架构中没有特别详细的介绍,在大型的bbs系统下,图片常常会出现容灾现象——图片数量严重超过了单台前端服务器容纳能力,导致前端服务器命中率低下。处理容灾问题也是非常棘手的,往后会有更详细的介绍。

7、简单的点击量统计办法

1/使用js的script标签访问另一(台)组服务器的空文件,然后定期向数据库更新
2/在前端的nginx上直接开启日志功能,按需要统计点击量的链接规则进行记录,然后定期更新数据库

分类: nginx, webapp 标签:

WebGame架构与开发心得

2011年3月3日 没有评论

转:http://hi.baidu.com/lukin/blog/item/b20df3360e9dea3a0b55a90c.html
WebGame架构与开发心得

游戏的基础框架非常重要,这个如果项目开始没有架构好,到后期会让所有的程序员都感觉是在玩大便一样(非常的恶心)。

程序基础框架要实现的几个基本功能:

1.灵活的配置,包括游戏的各种参数配置;
这个工作能够在后期维护的时候减少不少工作量。特别是在给游戏做各种活动的时候,方便在GM后台给GM开发支持多样性活动的功能。
开服的一些基本配置(例:数据库配置、memcache配置),直接写死在文件里即可,方便开服人员部署服务器。

2.统一的程序入口,方便增加统一的处理,例如:方便的给module层增加filter
这个主要是让程序能够很方便植入任务系统,例如:新手任务;
还可以很方便的进行统一用户登录验证,开发一些很公用的功能,例如:支付模块

3.日志记录
开发期间一定要记录所有的SQL执行日志,方便开发期间查看程序的执行顺序和排错,而且还可以通过SQL执行的日志对程序进行减少SQL查询的优化。
游戏运行日志,记录在数据库里就可以了,但是要提供外部的日志查询接口,方便开发统一的GM后台。

4.模板系统,越简单约好,因为游戏99%的页面都是通过AJAX请求来展示的,所以,模板系统就不要搞得太复杂了,直接include php文件就ok了。

5.外挂的各种系统,能用PHP实现并且满足效率需求的,优先考虑使用PHP开发,其次再考虑其他语言开发,一个系统有多种语言开发出来会增加后期的维护成本。

前端架构,包括:JS/CSS/图片:

前端JS架构也是非常重要的一块,因为WebGame本身就是要大量使用JS的,所以,这个架构跟PHP的基础框架一样重要。
我们开发第一款游戏没有经验JS到处乱堆、乱放、乱写,到最后我想找一个点击事件到底执行了那段代码都要翻半天,还不一定能找到。
JS API应该提供给程序员最简单,最容易理解的写法,我认为最简单的就是 func(arg1,arg2) 这种调用方式,所以,我做的架构基本上大部分提供给PHP程序员的就是这些函数式的调用。我们使用了jQuery作为JS框架,减少了不少工作量,而且PHP程序员也非常容易上手。

CSS架构要求的不多,主要体现在:兼容多种浏览器、图片整合成为一张图,通过背景定位去调用、规定了一些命名规范,并且使用了CSS框架里的Reset.CSS

图片基本上没有做太多的规范,只是有一些资源图片放在了数据库里,其他地方使用资源ID,界面图片就随便美工放在一个目录里了。

JS和CSS需要在发布版本的时候进行压缩,所以,我们专门做了releaser,这样可以避免CSS在IE下面的一些限制,还可以对服务器的流量进行优化,方便做CDN。

一些必须注意的事项:

各种活动配置一定不要写在配置文件里,后期维护的时候,维护的人会崩溃。

游戏的GM后台最好是集中控制,一个GM后台,可以管理多个游戏服务器。

支付模块,最好能支持对游戏的各种数值扣费,策划的脑子是非常的BT的。

用好jQuery框架,否则,将会导致内存泄露的严重问题。

分类: webapp 标签:

全新解决:PHP has encountered an Access Violation

2011年2月18日 没有评论

大概没有人在玩PHP的过程中会不曾遇到“PHP has encountered an Access Violation…”错误吧?尤其是像这种完全没有接触过Microsoft以外平台的人来说,第一次着实被吓得不轻,在花了三个小时也没解决后,差点放弃了。
习惯了Windows平台的全GUI操作模式,对于完全需要手工配置的PHP + MYSQL ,实在是不习惯。好有很多东西的原理是相同的,熟悉起来也不是太难的事情。
在尝试过PHP和MYSQL的自动安装和手动安装后,在经过不同版本的组合试验后,经典的“PHP has encountered an Access Violation…”终于不请自来,PHPMYADMIN不可用,DZ也不可用。上网一搜,同病相怜的人还真不少,而且大家都纷纷转载某位大侠的文章,我也摘抄一下吧,只是抱歉无法知道原作者是谁。
这个问题不是很好处理,困惑了很多站长非常时间了
主要出现在windows主机的服务器上。
在php官方,http://bugs.php.net/
也能够查到两三千页的报告,他们官方也是束手无策,经过了11个小版本后,还是没有彻底解决
http://bugs.php.net/search.php?cmd=display&search_for=PHP+has+encountered+an+Access&x=8&y=9
目前我提供一下这几年我维护经验,我的一些民间解决办法
第一种可能:
去掉 php中 eaccelerator 的扩展
这样做能够解决您的问题,不过可能会加重系统负担
因为eaccelerator主要是为了节省系统资源的东西
具体做法是找到php.ini
如果是我帮您配置的,一般在c:/php/php.ini或者 c:/winnt/php.ini 或者c:/windows/php.ini
去掉
zend_extension_ts=”C:\php\extensions\eaccelerator_win_xxx.dll”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”c:\temp”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″
ea主要是在unix环境下开发的,但是作者忽略到windows实际上不像u主机那样,是没有u主机的那种内存共享机制的
这个bug已经提交给他们了,希望0.9.5能够解决
当然,如果您的机器这个问题不严重,建议还是保留,ea是一块非常优秀的Php缓存+加速软件
配合zo使用,将会降低系统负担 50%-80%左右,提高负载能力、速度和效率 200%左右
 

第二种可能
session_save_path 需要设定一个实际的物理路径,并且该目录需要everyone的所有权限,类似U主机的0777
 

第三种可能
c:/winnt/temp 或者 c:/windows/temp
也需要everyone的所有权限,类似U主机的0777
 

第四种可能
您的内存严重不足,查看一下,如果有问题,请加内存,最好是一次加两条
比如加1G内存,最好是加2条一模一样的512M。否则没有启用双通道,效果也很一般
 

第五种可能
ZendOptimizer和php的搭配不是很好
换个版本试试看
目前比较稳定的搭配是
php4.3.11+zo 2.5.10a
或者php4.4.1+zo 3.0 beta2
 

第六种可能
这种多属于用win2003的用户
他们在应用池中设定了限制
比如多长时间回收,最大使用内存多少等等
这些设置势必造成这个经典的php错误
木头经过数以百计的测试,敢担保问题会出现在这里。
这篇文章的作者应该具有相当丰富的经验,可惜他的这些经验目前对于我都没有帮助,也就是说以上的六种可能在我这里都不存在。
 
伴着这个问题上床睡觉,但难以入眠,反复对比这几天没有遇到此问题的各种配置,思索着可能的第七种原因。
 
出现这个问题,在我重装Windows Server 2003,全新下载php+mysql+zend并安装的环境下。服务器系统本身是肯定没有问题的,在出错的情况下,完全卸载php+mysql+zend,并换上xampp却是正常的,说明DZ没问题,并再次说明系统没有问题。
 
出错的主要是phpmyadmin和DZ,而这两者都是需要和mysql连接的,是否mysql有问题?
 
第二天早上顾不得吃早饭就查看并保存了xampp下面的phpinfo,然后重新装上昨天出问题的组合,查看phpinfo,一对比,最主要的区别就在于mysql的版本。xampp带的是5.022,我自己安装的是5.124。
 
卸载mysql5.124,重新下载一个mysql5.022装上,还是不行。再次检查phpinfo,发现mysql模块的版本仍然是5.124。
于是停止运行mysql和IIS,把mysql安装目录下面的libmysql.dll分别覆盖到php安装目录和%win%\system32下面,再重启MYSQL和IIS,问题解决!
 
感叹1:开源软件是好,但是太缺乏标准和统一性,过多的版本让人会难以适从。偶这还是WIMP,如果是真正的LAMP,版本之间的组合可能会更多,怎么选呢?
感叹2:软件并非越新越好,合适的就是最好的

分类: webapp 标签:

centos5.5+nginx0.8.54+mysql5.5.8+php5.3.5 最新详细安装手册

2011年2月16日 2 条评论

转载自:http://ggt8702.com/?p=146
本篇中nginx、mysql、php都会被安装在/opt/目录下,它们的配置文件和日志等都在它们的安装目录下;mysql的数据库数据放在/data/mysql下,网站数据放在/data/www下。

友情链接:CentOs5.5+Apache2.2.17+MySQL5.5.8+PHP5.3.5环境搭建

系统准备和依赖程序库安装

下载安装包

安装libiconv、libmcrypt、libltdl、mhash、mcrypt

安装cmake

准备用户、目录

安装mysql
编译

配置

ls一下你会看到有下面的文件: my-huge.cnf 【对应1-2G内存】、my-large.cnf 【对应512M内存】
、my-medium.cnf 【对应128M内存】、my-small.cnf 【对应64M或更低】,你可以查看这些文件,参

照你的电脑配置,选择一个文件

你可以再编辑my.cnf,自己调整下参数,也可以保持不变

初始化和启动

按照提示设置root密码等

安装php
编译

安装扩展

配置eaccelerator,在文件末尾添加

配置memcache,在文件中搜索extension_dir、extension ,在相应位置添加下面两行

配置php-fpm

安装nginx
安装pcre

编译

配置
编辑/opt/nginx/conf/nginx.conf,这里给个简单的例子

启动服务器

好了,你可以试着从浏览器访问了。为了测试nginx和php是否协作正常,可以建一个test.php,内容为 ,将它放到到/data/www目录中,从浏览器访问http://your-server-ip-or-hostname/test.php,如果你能看到一个PHP的信息页面就可以了。

php测试页面

代码高亮插件 Syntax Highlighter and Code Colorizer for WordPress

2011年2月15日 没有评论

wordpress代码高亮插件有很多,但是都存在各种各样的问题。大多数不能进行编辑模式的自由切换,这样以来在编辑文本的时候,就比较麻烦。那么有没有一个很完美的WordPress高亮插件呢?怎样才算一个完美的WordPress高亮插件?

一款好的WordPress高亮插件应该具备一下特点:

1.可以自由的切换编辑模式
2.文章保存以后,再打开编辑,高亮依然有效
3.最好不是JS高亮,因为js在阅读器中无法解析
Syntax Highlighter and Code Colorizer (下载地址) 插件基本可以满足以上的要求,唯一的缺点就是js模式高亮,在阅读器中无法实现高亮效果,此外每一种语言加载了一个js文件可能会影响速度,不过我们可以把所有的js文件压缩为一个。

在你要发表的代码处加上类似:

[code-alias]是代码的类型,如果是PHP代码,则将[code-alias]替换为php[注:小写];如果是html,则相应的替换为html即可。

此插件支持的语言有:

Bash/shell,C#,C++,CSS,Delphi,Diff,Groovy,JavaScript,Java,Perl,PHP,Plain Text,Python,Ruby,Scala,SQL,Visual Basic,XML……

分类: webapp 标签:

WordPress升级错误:Fatal error: Maximum execution time

2011年2月15日 没有评论

今天在给本地做测试用的WordPress博客升级的时候,出现以下错误:

     Fatal error: Maximum execution time of 30 seconds exceeded in x:\phpdocs\wp\wp-includes\http.php on line 1024

错误原因:

  1. 博客数据库中的数据量太大,导致程序执行时间过长;
  2. 博客所使用的服务器设置做了限制,php.ini 中缺省的程序最长执行时间是 30 秒,程序若执行超过30秒,就会被系统终止。

解决办法:

  1. 如果是自己的服务器,可更改php.ini中的max_execution_time数值,数值大小自己选择,改到错误不出现为止,默认是30,现在我改成60 ;
  2. 如果使用的是虚拟主机,可以在主机根目录下的.htaccess文件中设置(如果没有该文件,可以新建一个),在.htaccess文件中加上php_value max_execution_time 60,60这个数值单位为秒,请仔细斟酌更改;
  3. 在wp-includes\http.php中添加该语句:
    1
    set_time_limit(60);   //0为无限制
  4. 或者在wp-includes\http.php中添加该语句:
    1
    ini_set(‘max_execution_time’, ’60’);
分类: webapp 标签: ,

网页自动跳转的三种代码

2011年1月24日 没有评论

很多时候我们需要Web页具备有自动跳转功能,例如,论坛中的用户登录、发帖及回复或留言簿中的留言和回复等操作成功后,若用户没有任何鼠标点击操作,过了一定的时间,页面自动跳转到预设的页面。本文讨论网页自动跳转的几种实现方法。

方法一:使用meta标签
meta标签是html不可或缺的标签之一,它负责提供文档的元信息,其参数主要有:

① http-equiv: 与文档中数据相关的HTTP文件首部
② content: 与命名HTTP首部相关的数据
③ name: 文档描述
④ url: 与元信息相联系的URL
当我们定义属性http-equiv为refresh,打开此Web页时系统将根据content规定的值在一定时间内跳转到相应页面,content=”秒数;url=网址”就是定义了过多长时间跳转到指定的网址。以下meta标签告诉系统一秒钟后页面自动跳转:

以上代码需要加在HTTP文档首部中,介于与之间,通常,meta标签是紧跟在之后。若需要有多个meta标签,它们可以各占一行。

此法通用于任何环境,包含静态的网站空间。

方法二:使用header函数
header函数是php内置函数中的HTTP相关函数之一,该函数送出HTTP协议标头到浏览器。使用它可以重定向URL,即令页面转向其他指定的网页。以下例子,执行后将自动打开黑马在线动力首页:

header(“Location: http://daohang.54im.com”);

必须注意,header函数只能用在页面代码中的标签之前,亦即,HTTP首部尚未有其他任何标头()传送给浏览器之前,而且,此前页面也不能print或echo任何内容。换句话说,在页面的出现前,程序只单纯地处理header事件。尽管有如此严格的要求,灵活地使用它,仍然可以达成页面的自动跳转功能,比如登录页面,通过判断用户提交的数据是否合法来决定页面跳转到何处。以下给出一个简单的例子:

<?php

/* 登录程序 – 文件名:login.php
程序作用 – 判断用户登录口令 */

if($_POST[‘Submit’]) {
session_start();
if($_POST[‘pws’]==’123′) { //若密码为 123
$_SESSION[‘passwd’]=’123′; //写入会话数据
header(“Location:index.php”); //跳转到正常页面
}else{
header(“Location:login.php”); //跳转到登录页面
}
}

//表单代码略(也可以用纯html代码写表单,若如此,代码应放在程序之后

?>

<?php

/* 检测会话数据 – 文件名:index.php
程序作用 – 检测会话数据中的密码是否为123,若不是,返回
登录页面 */

session_start();
if($_SESSION[‘passwd’]!=’123′) header(“Location:login.php”);

//其他代码(纯HTML代码应写在程序之后)

?>
此法显然只能用于支持php的空间环境。

方法三:使用JavaScript
JS非常灵活,利用它可以做出功能非常强大的程序脚本,这里仅举一个简单的页面自动跳转的JS例子。以下代码执行后浏览器将自动转到黑马在线动力网站,该代码可放在页面中的任何合法的位置:

<script language=”javascript” type=”text/javascript”>

window.location.href(http://daohang.54im.com);

</script>
此代码适用于任何Web环境。若加入定时器,将更加妙不可言。

分类: webapp 标签: