php判断常用上传文件类型,自动获取文件扩展名

星期四, 2012-03-29 | Author: Lee | php | 没有评论

在用php进行文件上传的时候总要判断文件的扩展名名等进行是否允许操作,经测试记录比较常用的文件类型,
记录如下,如有不全,希望能补正修改,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
switch    ($_FILES['userupfile']['type'])   
   {     
   case    "image/jpeg":     
   $fileextname    =    "jpg";     
   break;  
    case    "image/pjpeg":     
   $fileextname    =    "jpg";     
   break;    
   case    "image/gif":     
   $fileextname    =    "gif";     
   break;     
   case    "image/png":     
   $fileextname    =    "png";     
   break; 
   case    "image/x-png":     
   $fileextname    =    "png";     
   break; 
    case    "image/bmp":     
   $fileextname    =    "bmp";     
   break;    
   case    "application/x-shockwave-flash":     
   $fileextname    =    "swf";     
   break;     
   case    "text/plain":     
   $fileextname    =    "txt";     
   break;     
   case    "application/msword":     
   $fileextname    =    "doc";     
   break;     
   case    "application/x-zip-compressed":     
   $fileextname    =    "zip";     
   break; 
   case    "application/vnd.ms-excel":     
   $fileextname    =    "xls";     
   break; 
   case    "application/vnd.openxmlformats-officedocument.wordprocessingml.document":     
   $fileextname    =    "docx";     
   break; 
   case    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":     
   $fileextname    =    "xlsx";     
   break; 
   case    "application/pdf":     
   $fileextname    =    "pdf";     
   break;   
 
   }

Tags: , , ,

apache,nginx反向代理出现内网ip解决方法

星期四, 2012-02-23 | Author: Lee | JAVA-and-J2EE, linux | 没有评论

apache中设置如下反向代理后端的tomcat出现
request.getServerName();获取到的主机名称就会是localhost,解决这个

<VirtualHost *:80>
    ServerAdmin service@i5a6.com
    DocumentRoot /usr/local/apache/htdocs
    ServerName i5a6.com
    ServerAlias *.i5a6.com
     DirectoryIndex  index.html  index.html.var  index.jsp
     ProxyPass / http://localhost:8080/
     ProxyPassReverse / http://localhost:8080/
     ErrorLog "logs/hscode-error.log"
     CustomLog "logs/hscode-access.log" common
</VirtualHost>

在httpd.conf 文件中增加:
ProxyPreserveHost On 即可

对应的nginx 也有此问题解决之法:
proxy_set_header Host $host;

upstream mytomcat{
 #server 127.0.0.1:8000 weight=3;
 #server 127.0.0.1:8001;
 #server 127.0.0.1:8002;
 server 127.0.0.1:8080;
 }
 
server
{
listen 80;
server_name i5a6.com *.i5a6.com;
index index.html index.htm ;
root /usr/local/data/htdocs/www;
 
location / {
# proxy_set_header Host %host;
# proxy_set_header X-Forwarded-For $remote_addr;
 proxy_pass http://mytomcat;
proxy_set_header Host $host;
 }

Tags: , , , ,

apache反向代理集群,实现负载均衡,编译mod_proxy模块

星期三, 2012-02-22 | Author: Lee | JAVA-and-J2EE, linux | 一条评论

利用apache和tomcat做集群,有好几种方式,另一种见apache tomcat 负载均衡集群和session复制 基于jk
本文是使用代理的模式;
一:查看是否有mod_proxy模块功能
[i5a6]# /usr/local/apache/bin/httpd -l
可以看到是否有mod_proxy的模块,直接去 /usr/local/apache/modules/ 去查看是否有对应的mod_proxy.so,mod_proxy_balancer.so,mod_proxy_http.so,mod_proxy_ajp.so的模块包
二:本人的是vps已经安装好的apache不过没有编译此模块要自己动手编译
[i5a6]# find / -name mod_proxy.c
注释:我是不知道它的安装目录,直接根目录下检索吧,主要是找对应的模块文件夹;
执行结果:/home/cpeasyapache/src/httpd-2.2.17/modules/proxy/mod_proxy.c

[i5a6]# cd /home/cpeasyapache/src/httpd-2.2.17/modules/proxy/
[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy.c proxy_util.c

[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy_balancer.c

[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy_http.c

# 安装proxy_ajp模块
[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy_ajp.c ajp_header.c ajp_utils.c ajp_msg.c ajp_link.c

可以去 /usr/local/apache/modules/ 看下生成了对应mod_proxy.so,mod_proxy_balancer.so,mod_proxy_http.so,mod_proxy_ajp.so的包,

三:配置httpd.conf,设置权重和session严格复制等
› Continue reading

Tags: , , , ,

itext的转换pdf的尝试

星期日, 2012-02-12 | Author: Lee | JAVA-and-J2EE | 没有评论

今天写了个转换成pdf的文档,做个生成个表格的东东.没有做中文支持的问题,支持中文可以下载扩展包处理.
下载itext的jar包:可以去:http://sourceforge.net/projects/itext/files/ 下载更多版本,目前最新为itext-5.1.3.zip
对应的api文档可以翻阅:itext–api

生成个类似下列表格的图片:

代码如下:
› Continue reading

Tags: , , ,

java中需要转义的正则表达式符号

星期日, 2012-02-12 | Author: Lee | JAVA-and-J2EE | 没有评论

special sign 注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n
或 \r 前面的位置。若要匹配 $ 字符本身,请使用 \$。

( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。

零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。

+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。

. 匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。 [ ] 标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。

? 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。

\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配
(。

/ 表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。

^ 匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。

{ } 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。

| 指出在两个项之间进行选择。若要匹配 | ,请使用 \|

Tags: , ,

apache tomcat 负载均衡集群和session复制 基于jk

星期三, 2012-02-08 | Author: Lee | JAVA-and-J2EE | 一条评论

apache服务器和tomcat的连接方法其实有三种:JK、http_proxy和ajp_proxy。
本文主要介绍最为常见的JK。
基于centos5.5 linux下配置:
1.安装tomcat7、apache2.2.22服务器及版本对应的JK
这里需要注意的是JK版本必须与apache服务器版本号对应。apache下载
对应的linux的编译的jk版本可以去 mod_jk.so去下载
注意点:如果你安装的apache是2.0.63版本或者说是2.0.X版本做好选用 mod_jk-1.2.26-httpd-2.0.61.so
如果是最新版2.2.22,可以选用最用mod_jk-1.2.31-httpd-2.2.x.so
,总之不成功的时候自己去试试so,我就实验好多,一开始机器装的是2.0.63的apache让人崩溃的老版本.
下载对应的so文件到apache下的modules目录中.
apache_home表示apache服务器安装目录.
2.配置apache服务器
2.1 httpd.conf文件
apache_home目录下的conf/httpd.conf文件中添加 复杂配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so 
JkWorkersFile conf/workers.properties  
JkMountFile conf/uriworkermap.properties  #加载workers的请求处理分配文件 可以不需要
JkLogFile logs/mod_jk.log #指定jk的日志输出文件 可以不需要
JkLogLevel warn #指定日志级别可以不需要
JkMount /* lbcontroller   #根据需要可以配置多个 设置apache分发器,/*表示apache将所有文件都由分发器lbcontroller 进行分发,你可以自行设置*.jsp,*.do等 
 
 uriworkermap.properties文件,内容如下
/*=lbcontroller                     #所有请求都由controller这个server处理
/jkstatus=status                   #所有包含jkstatus请求的都由status这个server处理
!/*.gif=lbcontroller                   #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
!/*.jpg=lbcontroller
!/*.png=lbcontroller
!/*.css=lbcontroller
!/*.js=lbcontroller
!/*.htm=lbcontroller
!/*.html=lbcontroller

简单配置:apache文件加 Include “/usr/local/apache/conf/mod.conf”
在”/usr/local/apache/conf/目录下创建mod.conf内容:

1
2
3
4
5
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so 
JkWorkersFile conf/workers.properties  
#JkMount /*.jsp lbcontroller
#JkMount /*.do lbcontroller  
JkMount /* lbcontroller   #根据需要可以配置多个 设置apache分发器,/*表示apache将所有文件都由分发器lbcontroller 进行分发,你可以自行设置*.jsp,*.do等

2.2 workers.properties文件
在apache_home下conf目录中新建workers.properties文件,输入以下内容
Xml代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
worker.list=lbcontroller  
 
#Tomcat1实例配置  
worker.tomcat1.host=localhost #此处可以是你的ip地址  
worker.tomcat1.port=8009  
worker.tomcat1.type=ajp13  
#分发权重 值越大负载越大  
worker.tomcat1.lbfactor = 1  
 
#Tomcat2实例配置  
worker.tomcat2.host=localhost #此处可以是你的ip地址   
worker.tomcat2.port=9009  
worker.tomcat2.type=ajp13  
#分发权重 值越大负载越大  
worker.tomcat2.lbfactor = 1  
 
#负载均衡分发控制器  
worker.lbcontroller.type=lb  
worker.lbcontroller.balance_workers=tomcat1,tomcat2  
worker.lbcontroller.sticky_session=True

在这里

1
2
3
4
5
6
7
8
worker.list=lbcontroller  
 内容即为httpd.conf文件中的分发器名称。需要注意的内容是,tomcat实例名称
Xml代码  
worker.tomcat1.host=....  
...  
worker.tomcat2.host=....  
...  
 在这里就是tomcat1和tomcat2必须与之后tomcat中的server.xml中jvmRoute值一致。
更多的work.properties可以参考:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
worker.list=loadbalancer                        #定义负载均衡的名称  
worker.loadbalancer.type=lb                     #定义负载均衡的类型,为lb  
worker.loadbalancer.error_escalation_time=0     #切换错误状态时间  
worker.loadbalancer.max_reply_timeouts=10  
worker.loadbalancer.sticky_session=1            #1代表为true0代表为false。  
#worker.loadbalancer.sticky_session_force=true  
 
worker.loadbalancer.balance_workers=lb1,lb2 #负载均衡的工作者名称  
 
worker.lb1.reference=worker.template    #lb1参考worker.template工作模板  
worker.lb1.host=localhost           #lb1的ip地址  
worker.lb1.port=8009                #lb1端口,这里是ajp端口,不是网站端口  
worker.lb1.activation=A                 #A:active模式 D:sticky模式 S:不使用  
 
worker.lb2.reference=worker.template  
worker.lb2.host=localhost  
worker.lb2.port=9009  
worker.lb2.activation=A  
 
worker.template.type=ajp13                  #上面lb1,lb2参考下面的值worker.template,协议ajp13  
worker.template.socket_connect_timeout=5000 #套接字连接超时为5000毫秒,默认为0  
worker.template.socket_keepalive=true           #开启保持为真,默认为false  
worker.template.ping_mode=A                 #使用cping/cpong模式,有C,P,I,A四个模式。A全选  
worker.template.ping_timeout=10000          #探测cping/cpong超时间默认10000毫秒  
worker.template.connection_pool_minsize=0       #连接池关闭最小时间  
worker.template.connection_pool_timeout=600 #连接池600秒  
worker.template.reply_timeout=300000            #答复超时300000毫秒  
worker.template.recovery_options=3          #重试次数

3.tomcat集群配置
› Continue reading

Tags: , , , ,

解决MYSQL超时连接问题(com.mysql.jdbc.MysqlIO.readFully)

星期一, 2012-02-06 | Author: Lee | Database | 2 Comments

程序后台报这个错误 at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2332) ,
** END NESTED EXCEPTION **

Last packet sent to the server was 34 ms ago.
这个问题主要原因是应用服务器很长时间没有连接mysql,超过了mysql设置的最大超时时间,再连接mysql就会出现这个问题。
mysql默认设置是8小时,一般网站白天都有人访问,从夜里到早上一般都会超过8小时,所以再来访问就会这个问题。

简单的解决办法就是修改最大超时时间,比如改为12小时或10小时,这样恰好避免了无人访问的时段,这里修改为10小时,方法如下:
看来下 wait_timeout 才15真不是一般的短,系统默认安装的就是麻烦.
设置下即可

mysql> show variables like ‘%timeout’;
+—————————-+——-+
| Variable_name | Value |
+—————————-+——-+
| connect_timeout | 15 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 15 |
+—————————-+——-+
10 rows in set (0.00 sec)

mysql> set wait_timeout = 36000;
Query OK, 0 rows affected (0.00 sec)

mysql> set interactive_timeout = 36000;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like ‘%timeout’;
› Continue reading

Tags: ,

window7下清除写字板最近浏览记录

星期三, 2012-02-01 | Author: Lee | computer | 没有评论

win7下, 写字板最近浏览记录很难清除,其他的垃圾清除工具不能清除,在网上找来好多也都是说xp下的,
在win7下对应的清除写字板(注册表)的位置有变化,所以还要自己去想办法去搞定.
步骤:
开始—》在框框中输入 regedit 打开注册表里,在注册表中 CRTL+F 即编辑中的查找,输入 wordpad,很快定位到,打开后Recent File List,右侧的键值,选中不想要的右键 删除即可;
其他的类似画板 类似操作;
完整路径是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Wordpad\Recent File List
搞定,你那些不想让人知道的浏览记录就彻底被清除了;

Tags: , , ,

Linux Commands 常用命令

星期三, 2012-01-25 | Author: Lee | linux | 一条评论

文件命令
ls 列出目录下的文件和文件夹
ls -al 已列表方式列出目录下的文件和文件夹,包括隐藏文件
cd dir 将目录切换到 dir
cd ~ 切换到用户目录
pwd 打印当前目录
mkdir dir 新建 dir 目录
rm file 删除 file 文件
rm -r dir 删除 dir 目录及其子目录
rm -f file 强制删除 file 文件
rm -rf dir 强制删除 dir 目录及其子目录
rm -rf / 这个就不用说了,该命令敲完再回车下,系统就玩完了
cp file1 file2 将 file1 复制到 file2
mv file1 file2 将 file1 重命名为file2
ln -s file link 为文件 file 在另外一个位置建立一个软链接
touch file 创建名为 file 的文件,如果该文件已存在,则更新其文件的时间戳, 之前文件内容并不会丢失。
cat > file 创建新文件,并接下来的键盘输入重定向到 file 文件,直到退出该输入。
more file 分页显示 file 的内容, 支持 ctrl+B ctrl+F …..上下滚屏,但不支持像shift+G(跳到文件尾)这种操作
less file 分页显示 file 的内容,支持各种命令, 随便翻页,跳转,查找…
head file 显示文件 file 的前 10 行内容
tail file 显示文件 file 的最后1 10 行内容
tail -f file 实时显示文件 file 的最后 10 行内容
find /etc -name ‘*srm*’ 查找匹配度
SSH
ssh user@host 连接远程主机
ssh -p port user@host 连接远程主机上的 port。 不用这个选项,默认就是22
ssh -D port user@host 使用非特定的 port 去对外联机。如果被访问机器的防火墙不淮许从特定的 port 联机,就可以使用这个选项。这个选项会关掉 RhostsAuthentication 和 RhostsRSAAuthentication

› Continue reading

Tags: , ,

apache的window配置PHP说明

星期二, 2012-01-24 | Author: Lee | php | 没有评论

可以都使用最新的版本,此处要注意的就是php的版本为vc6和thread safe,具体可以参看php的说明在左边的注释.
Apache 2.2.21 — www.apache.com
PHP 5.2.17 — www.php.net
MySQL — www.mysql.com
Zend Optimizer — www.zend.com
phpMyAdmin — www.phpmyadmin.net
严重注意:在进行下列操作前,Windows XP应无安装IIS、PHP、APACHE、MYSQL、ZEND。
≡ Apache 2.2.21的安装 ≡
打开我的电脑,进入D盘,在其下新建一个文件夹,名为 local 。
到其官方站点下载 httpd-2.2.21-win32-x86-openssl-0.9.8r.msi 并执行。
按3 次Next按钮,安装程序要求输入你的Network Domain(网络域名)、Server Domain(服务器域名)和网站管理员的E-mail,有的话就如实填写,本说明介绍的是本地自建测试环境,所以随便一下,前两个填 localhost ,邮件写自己的即可。
进入Next后,默认的安装路径是”C:\Program Files\Apache Software Foundation\Apache2.2\”,修改路径,改为前面所述的”D:\local\Apache2″。
然后一路下去,直到安装结束;此时,打开D盘下的local文件夹,可以看到有一个名为Apache2的文件夹。
打开IE,然后在地址栏输入:”http://localhost” 或者 “http://127.0.0.1” 可以看到Apache安装完成的成功页面;以后网页的存在位置就在 “D:\local\Apache2\htdocs” 目录。

≡ PHP 5.2.17 (VC6 x86 Thread Safe )的安装 ≡
› Continue reading

Tags: , , ,

Search

文章分类

Meta