1

我正在调用外部 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 用户是可写的,所以这不是问题。

4

1 回答 1

2

聊天中调试后发现该行

open (WRITECSS, ">output.css")or die("error in Writing CSSFile");

是罪魁祸首。由于从命令行运行脚本创建了一个具有错误写入权限的文件,因此脚本在此语句中死亡。由于没有将错误返回给 PHP,因此错误是静默的。

解决方案是chmod输出 CSS 文件。

通过从 perl 重定向STDERR到文件并将错误报告变量添加$!die语句来完成调试:

open STDERR, ">>", "somefile" or die $!;
open (WRITECSS, ">output.css")or die("error in Writing CSSFile: $!");
于 2012-06-01T14:46:48.223 回答