1

DXFファイルをSVGに変換するために外部Perlスクリプトを呼び出していますが、スクリプトがPHPから呼び出された場合、出力SVGファイルは常に0バイトです。端末から同じコマンドを実行すると、出力SVGファイルはOKです。

PHP system()を介してコマンドを実行し、exec()とpopen()も試しましたが、常に同じ結果になります。

dxf2svg.pl perlスクリプトのソースコード:http://pastebin.com/fE2BcUqE

私が実行しているコマンド:

perl /path/dxf2svg.pl "/path_to_dxf/file.dxf" ">/output_path/file.dxf"

出力パスはPHPユーザーに書き込み可能であるため、これは問題ではありません。

4

1 に答える 1

2

チャットでデバッグした後、その行が発見されました

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: $!");
于 2012-06-01T14:46:48.223 に答える