概况:服务器IIS2003(IIS6)+PHP5.2.17,实际上为某一PHP系统做二次开发。采集内容:RAR文件。采集要求:将采集的RAR文件解压,然后替换里面的相关内容,再压缩(ZIP,7Z,RAR都可),做到的效果和原系统添加内容一致,即:可以自动生成静态页面等。
难点在于PHP解压RAR,在网上搜索了一下,粗略有两种方法:1.php_rar.dll。2.PHP调用SHELL。
先说第一点,php_rar.dll,是PHP官方提供的,在其官方网站上,提供PHP5.3和PHP5.4版的下载,据介绍是说兼容PHP5.2,很遗憾的就是,下载了php_rar.dll,在PHP5.2.17下没用,没法加载进来。因为服务器上挂了很多网站,不可能因为这个,而将服务器的PHP环境改变。当然,也可以在服务器上装两个版本的PHP,为了稳定起见,装着测试可以,真正跑,我想没人愿意冒这样的险。所以,这种方法排除。
第二点,用PHP调用系统的SHELL,这个是在WIN下,就是调用WSCRIPT.SHELL,服务器为了安全,一般都将这些给禁止了。我起用了,试了一下,COM对象在RUN的时候,没有效果,返回值也是运行失败。至于权限,能给的,都给了,这让我很是头疼。
无意之中,看到服务器桌面上的.net framework 2.0的安装包,一个想法就这样诞生了:用asp.net来操作RAR和UNRAR。因为asp.net毕竟是MS的亲生儿子,对进程的操作很方便,调用COM乃至用进程操作EXE,都是可行的。
进行的很顺利,在PHP中,用file_get_content,来判断RAR操作,是否完成。同理,也是用这个方法,来判断是否UNRAR操作完成。
为什么不全部用asp.net,因为原系统是基于PHP的,为了权限验证等等一系列操作,必须得按它的规范来开发,所以,就是得使用PHP。
这个方法有点笨拙,但确也解决了我想要解决的问题。哪位大侠若有其它方法,还望赐教。