使用exec调用外部程序出错
时间:2011-11-04
来源:互联网
我今天遇到一个很诡异的问题,不知道如何解决了。
我要做一个在线PDF阅读功能,用到了swftools中的pdf2swf.exe,由于pdf文件比较大,我将pdf文件每30页生成一个swf文件,然后通过flash阅读器来查看,将pdf转为swf的命令行代码如下:
HTML code
其功能是将 xxx.pdf的第31-60页生成 xxx_31-60.swf。
绝大部分情况都是正常的,今天遇到一个文件转换出错了,是转换一个文件的第31到60页,在转换过程中会弹出窗口
HTML code
点击确定后,php在得到的结果如下:
HTML code
中途出错了,而且每次中断的位置不一定。
然而我直接在命令行(cmd)中运行却一切正常。
更诡异的事情还在后面,我又尝试改变一下转换页的范围,我发现在php中转换 31-61页 或 31-59页居然通过了,唯独是 31-60页会出错,我当场晕死。。。
有哪位朋友知道这是怎么回事,如何解决吗?
我要做一个在线PDF阅读功能,用到了swftools中的pdf2swf.exe,由于pdf文件比较大,我将pdf文件每30页生成一个swf文件,然后通过flash阅读器来查看,将pdf转为swf的命令行代码如下:
HTML code
D:\SWFTools\pdf2swf.exe d:\swftools\xxx.pdf -p 31-60 -o d:\swftools\xxx_31-60.swf -f -T 9 -t -s poly2bitmap
其功能是将 xxx.pdf的第31-60页生成 xxx_31-60.swf。
绝大部分情况都是正常的,今天遇到一个文件转换出错了,是转换一个文件的第31到60页,在转换过程中会弹出窗口
HTML code
---------------------------
pdf2swf.exe - 应用程序错误
---------------------------
"0x00633616" 指令引用的 "0x025db000" 内存。该内存不能为 "read"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定 取消
---------------------------
点击确定后,php在得到的结果如下:
HTML code
NOTICE processing PDF page 31 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 32 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 33 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 34 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 35 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 36 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 37 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 38 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 39 (1303x793:0:0) (move:0:0)
NOTICE processing PDF page 40 (1303x793:0:0) (move:0:0)
中途出错了,而且每次中断的位置不一定。
然而我直接在命令行(cmd)中运行却一切正常。
更诡异的事情还在后面,我又尝试改变一下转换页的范围,我发现在php中转换 31-61页 或 31-59页居然通过了,唯独是 31-60页会出错,我当场晕死。。。
有哪位朋友知道这是怎么回事,如何解决吗?
作者: griefforyou 发布时间: 2011-11-04
又是这个问题。
windows中软件时不时就这个错误。悲哀啊。
windows中软件时不时就这个错误。悲哀啊。
作者: ohmygirl 发布时间: 2011-11-04
关键是用php调用的时候,而且是特定的文件,特定的参数才报错
作者: griefforyou 发布时间: 2011-11-04
可能跟调用参数有关吧。
非法操作跟linux的段错误意思差不多,都是访问了不该访问的内存地址。
非法操作跟linux的段错误意思差不多,都是访问了不该访问的内存地址。
作者: binarie 发布时间: 2011-11-04
引用 3 楼 binarie 的回复:
可能跟调用参数有关吧。
非法操作跟linux的段错误意思差不多,都是访问了不该访问的内存地址。
可能跟调用参数有关吧。
非法操作跟linux的段错误意思差不多,都是访问了不该访问的内存地址。
段错误跟是否linux没有关系吧。有内存访问的地方就可能有段错误。
在命令行中执行转换31-60页也会出错么?
作者: ohmygirl 发布时间: 2011-11-04
说法不一样嘛。windows里面习惯叫非法操作。
作者: binarie 发布时间: 2011-11-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28