K内核2.1php无法运行exec!
我想用php在服务器后台运行exec,不执行,我还以为我的exe有问题,在命令行下执行一点问题都没有,但是用php的exec运行就不行,据说K内核1.7的版本可以,用惯了了2.1不想换了,管理在吗,能不能修补下bug!谢谢! 这个问题,应该具有参考性,我希望解决后给后来人或者upupw作者改进一下问题!但现在我还没有解决问题! 我已经共享,大家帮忙测试下,kanggle1.7我也测试了,不行!http://pan.baidu.com/s/1bpwunnh 已完结:竟然是一个非常奇特原因导致,我把代码复制出来重新建立了一个文件竟然就好了! 解决办法:php下exec 可以执行系统命令而不能执行用户程序 第一排查原因:可用管道命令
使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。 备注: exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败 第二:exec命令调用用户程序必须是绝对路径 如:$command="C:\PDFtkServer\bin\pdftk.exe ".$get_path[4]." cat 1-30 output ".$get_path[3]." 2>&1"; $tt=exec($command,$myarry,$txb); [txb2d于2016-10-16 13:05编辑了帖子]
|
|
沙发#
发布于:2016-10-12 20:46
我怀疑是不是运行权限不够!说好的写个配置文件,为啥到现在还没有写啊!!!!!!!!!!!
图片:QQ截图20161012204443.png |
|
板凳#
发布于:2016-10-12 20:51
最近一直忙的做公司的项目,很少来这里发东西了,对不起大家了,随着,项目的结束,终于可以在这里吐槽了!
公司的项目其实说白了,就是想实现类似百度文库或其他文库类似的功能,供公司内部技术人员和销售人员来使用的,和文库类项目唯一不同的地方就是,就是多文档的同时上传。废话少说,直接上菜。 技术方面使用了如下的技术,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等等,但是不管使用那个方法,如果你的权限不对,什么都是白搭。 最后,还发现一个奇怪的现象,就是当你重新换系统后,即使,权限设置了,居然也不能实现相应的功能,你知道是为什么吗? 这个地方,你只要隐藏了已知文件类型的扩展名,就凭你是神仙也没辙。所以,这样的细节,还是要注意的好! 好了,收工! |
|
地板#
发布于:2016-10-12 20:52
权限问题,在网上讨论比较少,但是遇到问题就很难解决,些昂官方能看到,并给予关注解决!!!!!!!!!!!!
|
|
4楼#
发布于:2016-10-12 20:52
不过我的问题现在还没有来及解决!!!!!
|
|
5楼#
发布于:2016-10-12 21:17
K2.1版先任务管理器查看下K内核是否为system账户运行,如果不是则面板输入10后q1切换为SYSTEM账户运行K内核。
然后进入C:\WINDOWS\system32,找到cmd.exe这个文件,右键->属性,在“安全”设置里把SYSTEM账户的权限改为“读取与执行”,如果是64位系统再把C:\WINDOWS\SysWOW64下的cmd.exe权限也改下。 |
|
6楼#
发布于:2016-10-12 21:31
图片:QQ截图20161012213016.png 命令行执行正常,但是K内核 的php 里的exec 根本不执行,权限问题吗? |
|
7楼#
发布于:2016-10-12 21:31
|
|
8楼#
发布于:2016-10-12 21:40
|
|
9楼#
发布于:2016-10-12 21:41
|
|
10楼#
发布于:2016-10-12 21:57
|
|
11楼#
发布于:2016-10-12 22:01
cmd看下users组是否有读取和执行权限,另外执行exec命令时都用绝对路径,不要用相对路径。另外看下php-cgi进程是否也是SYSTEM账户运行。
|
|
12楼#
发布于:2016-10-12 23:20
|
|
13楼#
发布于:2016-10-12 23:21
|
|
14楼#
发布于:2016-10-12 23:25
难道2.1版的真的exec因为权限不能用?
|
|
上一页
下一页