0

これが私のコードです:

$pdf = '/Users/macbookpro/Desktop/q.pdf';
$swf = '/Users/macbookpro/Desktop/q.swf';

$command2 = 'pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';
exec($command2,$out,$status);
var_dump($output);

出力は NULL で、SWF は生成されません。ただし、コマンドを出力して端末にコピーすると、機能します。これを解決するにはどうすればよいですか?

4

1 に答える 1

1

exec は、スクリプトを実行しているユーザーとして実行されます。Apache ユーザーは、プログラムを探す場所を示す PATH 変数を持っていない可能性が高いため、代わりに

 $command2 = 'pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';

次のような pdf2swf の場所を追加してみてください。

 $command2 = '/bin/pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';

また、apache ユーザーが実行可能ファイルにアクセスする権限と、それを実行する権限を持っていることを確認してください。

 chmod a+x /bin/pdf2swf

もちろん/bin/、この回答のすべてのサンプルコードについて、pdf2swf が実際に存在する場所に置き換えます。

于 2015-12-11T18:08:00.550 に答える