都是权限惹的祸!

   最近一直忙的做公司的项目,很少来这里发东西了,对不起大家了,随着,项目的结束,终于可以在这里吐槽了!


公司的项目其实说白了,就是想实现类似百度文库或其他文库类似的功能,供公司内部技术人员和销售人员来使用的,和文库类项目唯一不同的地方就是,就是多文档的同时上传。废话少说,直接上菜。

技术方面使用了如下的技术,PHP,uploadify,flashpaper,swftools,fleapaper,ADODB等技术。upuploadify的资料这里就不介绍了,简单的说一下,来自国外的一款优秀jQuery插件,主要功能是批量上传文件,它的使用说简单也简单,说复杂也复杂,我遇到的唯一的难点就是如何使用表单给后端传参数,这里,通过度娘查了很多的资料,但没有发现一个有用的,大多数的资料用的都是老的版本,所以,没什么参考价值,只有一个www.pooy.net/这个博客还有点参考价值。有很多关于这个插件的用法也是在这里了解到的,推荐小白们有时间去这里看看。

我实现的是批量上传,并同时入库的功能,数据库的接口选择了adodb,开发的时候出了洋相,居然,多文件上传成功但没有入库,后来,检查居然是路径的问题,害死人啊!其次,就是上传中文目录和中文文件名的错误,进行了多次的转换,核心技术其实就是iconv,搞得我有点晕,不时要检查中英文的情况,所以,还是希望php的以后的版本能早点实现unicode的功能。传递参数其实使用的是$_POST。

说完了批量上传,下面就要说道重点了,文档的转换,其实,也主要是实现以下文档的转换,word转pdf,pdf转swf,或其它文档转成上面提到的几个办法。通过搜索,发现大部分使用的是flashpaper这个,我一开始也是选择了这个,使用的方法也非常的简单,安装该软件,然后,默认为打印机,使用命令行参数对上传的文件进行相应的转换工作,那么,在PHP中,则使用系统执行函数执行相应的操作即可实现。

但问题偏偏出在php执行系统函数的上面了,其实,在php中执行系统函数非常简单,一个system,或exec就可以了,好了,开工,测试,没有出现相应的结果。难道是命令行语句有错吗?在cmd下运行,没有问题,说明不是软件的问题,难道,系统执行函数有错,用系统函数执行系统命令,见鬼了,居然有动静了。经过反复的测试,发现,只要是实现系统的命令,程序完美运行,只要一执行用户命令,程序没有反应。忘了,说了,我使用的apache+PHP的配置,IIS+PHP的环境,暂时对这个不感冒!总觉得配起来太麻烦。但不见得就不好啊,我只是犯懒了。

开始网上的搜索,大部分都是扯蛋的文章,没有发现一个有用的资料。没办法只能自己想办法,在这个项目开始以前,曾经在xampp环境下执行成功过一次,而由于xampp装上后占的硬盘太大,就换成了upupw了,该环境进行了的大量的优化组合,所以就果断的从xampp换成了upupw了,对了,其实是想用nginx组合的,但由于没有时间研究apache下的转换规则,就暂时放弃了,有时间再看看。废话少说,重新安装xampp,然后,在运行,居然。。。。。。。,活见鬼了,这2个环境没有大的区别啊,只是一个是系统服务运行,一个是单独运行。于是,把这个现象和upupw的作者做了反馈,他也表示不解,他对比了两个环境的配置文件,得出的结论是没有区别,于是,怀疑到是不是系统权限的问题啊,由于,执行系统命令,需要管理员权限并有完全控制功能,但我也查了。系统默认的就是管理员权限并有相应的规则。晕死,那就只能检查系统进程了,看看到底这2个系统后面发生了什么,打开任务管理器,看下面的截图:

居然发现,由于upupw使用的是系统服务运行的方式,它的用户名居然是system,而xampp没使用系统服务方式,它的用户名居然是administartor,不信这个邪,我把xampp也改成了系统服务方式,upupw由于无法更改选项,只能在系统服务栏中,把执行的用户名改成administator,活见鬼了,居然是xampp也不出结果了,upupw出结果。所以,最后的结论是原来是权限惹得祸。按理说不应该了,网上说的system的权限应该大于administartor的权限,有知道的人麻烦解释一下。

所以,当你想执行相应的系统级命令的时候,麻烦你检查下相应的权限。也许,就是因为这个权限会害你浪费了很多的时间和精力。大部分的人,由于不涉及到底层的应用,所以很容易的忽略这类问题。

功能是实现了,但效率也看出来了,由于flashpaper会发生其它比如死锁的现象,因此,有人建议不使用。由于,我们是在内部使用,因此不存在这个问题。为了解决上述问题,我也研究了fleapaper技术,但它使用的是把pdf转成swf,使用了seftool工具,这不是废话吗?要是上传了pdf,我才不用那个flashpriner呢?现在网上把pdf转成其它文件的我差不多都研究过。但没有发现有命令行接口的工具,如果有的话,会省很多时间的。有个7d-pdfmaker提供了命令行工具,它的图形界面势需要钱的,而命令行接口是免费的。但它对word文档要求比较严,我使用它转换word文档,居然,丢失目录格式。我也试过,其它的,什么com接口,调用wps等,使用python等等,但是不管使用那个方法,如果你的权限不对,什么都是白搭。

最后,还发现一个奇怪的现象,就是当你重新换系统后,即使,权限设置了,居然也不能实现相应的功能,你知道是为什么吗?


这个地方,你只要隐藏了已知文件类型的扩展名,就凭你是神仙也没辙。所以,这样的细节,还是要注意的好!

好了,收工!

 

你可能感兴趣的:(权限)