我正在调用外部Perl脚本将DXF文件转换为SVG,但是当从PHP调用脚本时,输出SVG文件始终为0字节。从终端执行相同的命令时,输出 SVG 文件正常。
我正在通过 PHP system() 执行命令,也尝试了 exec() 和 popen(),但我总是有相同的结果。
dxf2svg.pl perl 脚本源代码:http://pastebin.com/fE2BcUqE
我正在执行的命令:
perl /path/dxf2svg.pl "/path_to_dxf/file.dxf" ">/output_path/file.dxf"
Outup 路径对 PHP 用户来说是可写的,所以这不是问题所在。
在聊天中调试后,发现该行
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: $!");