Home >Backend Development >PHP Tutorial >用exec执行cmd命令返回为空
我把swftools里的pdf2swf.exe这个文件放到了网站根目录 在php里利用exec函数执行命令
$cmd = "c:/php/www/pdf2swf c:/php/www/upload/1.pdf c:/php/www/upload/1.swf"
exec($cmd);
我直接把这个代码 粘贴到命令行里 执行是正确的 可用php这么调用 却不成功 exec的后两个参数加上后 第二个参数是array();第三个是1,不成功 然后经过修改 我直接在跟目录下放个php文件 在里面写的exec(pdf2swf 1.pdf 1.swf)这么执行能成功 求教这是什么原因?
注:以上代码我在我本地测试完全通过,放到服务器上就是以上错误,都是windows2003的 网上用的IIS 本地用的apache
先看手册
exec() 第二个参数是屏幕返回的信息,每行为一个单元,组成数组
先看手册
exec() 第二个参数是屏幕返回的信息,每行为一个单元,组成数组
因为你手动打开命令行,是承接了系统环境的,所以能直接运行文件
但用php执行,并不能承接系统环境,所以你还是需要指明可执行文件(exe等)
这应该是用户权限问题
直接在跟目录下放个php文件 可以成功
但显然不是 web 方式运行的,因为你不可能将网站的根放在 C 盘的根上
建议:
将网站目录移动到 D 盘上,并授予匿名用户执行权
不把网站放在 C 盘可防止系统文件被意外破坏,同时在系统崩溃时,灾难恢复的的工作量要小得多
因为你手动打开命令行,是承接了系统环境的,所以能直接运行文件
但用php执行,并不能承接系统环境,所以你还是需要指明可执行文件(exe等)
这应该是用户权限问题
直接在跟目录下放个php文件 可以成功
但显然不是 web 方式运行的,因为你不可能将网站的根放在 C 盘的根上
建议:
将网站目录移动到 D 盘上,并授予匿名用户执行权
不把网站放在 C 盘可防止系统文件被意外破坏,同时在系统崩溃时,灾难恢复的的工作量要小得多
$mcd
$cmd
我看到两个不同的变量名
$mcd
$cmd
我看到两个不同的变量名
再试试单引号……也不想这个问题,尽管试试吧
$cmd = "c:/php/www/pdf2swf c:/php/www/upload/1.pdf c:/php/www/upload/1.swf"
exec($cmd);
这是你发帖中的代码
如果你提供的信息,怎么可能得到真实的结果呢?
$cmd = "c:/php/www/pdf2swf c:/php/www/upload/1.pdf c:/php/www/upload/1.swf"
exec($cmd);
这是你发帖中的代码
如果你提供的信息,怎么可能得到真实的结果呢?
首先要解决的是权限的问题
如果指令在命令行或批处理中可以正确执行的话,那么问题就在于“权限”
当然你是不会禁用 exec 函数的
我也遇到相同情况,不过我的命令可以执行成功,但是没有返回值。不知道问题出在哪,权限也全开了了