我正在调用外部Perl脚本将DXF文件转换为SVG,但是当从PHP调用脚本时,输出SVG文件始终为0字节。当从终端执行相同的命令时,输出SVG文件就可以了。
我正在通过PHP系统()执行命令,并尝试了exec()和popen(),但我总是有相同的结果。
dxf2svg.pl perl脚本源代码:http://pastebin.com/fE2BcUqE
我正在执行的命令:
perl /path/dxf2svg.pl "/path_to_dxf/file.dxf" ">/output_path/file.dxf"
Outup路径可以写入PHP用户,所以这不是问题。
答案 0 :(得分:2)
在chat中调试后,发现该行
open (WRITECSS, ">output.css")or die("error in Writing CSSFile");
是罪魁祸首。由于从命令行运行脚本创建了具有错误写入权限的文件,因此脚本在此语句处死亡。由于错误未返回给PHP,因此错误是无声的。
解决方法是chmod
输出CSS文件。
通过将STDERR
从perl重定向到文件,并将错误报告变量$!
添加到die
语句来完成调试:
open STDERR, ">>", "somefile" or die $!;
open (WRITECSS, ">output.css")or die("error in Writing CSSFile: $!");