如何使用exec()函数转换其文件名中包含空格的pdf文件。
例如:文件1.pdf到文件1.jpg
<?php
$pdf = "file 1.pdf";
$pdf_first_page = "file 1.pdf[0]";
$jpg = str_replace("pdf", "jpg", $pdf);
exec ("convert $pdf_first_page $jpg");
?>
我收到以下错误:
convert.exe: unable to open image `file 1.pdf': No such file or directory @ error/blob.c/OpenBlob/2702.
convert.exe: no images defined `file 1.jpg' @ error/convert.c/ConvertImageCommand/3257.
答案 0 :(得分:3)
您需要通过escapeshellarg()
传递参数,如下所示:
$pdf_escaped = escapeshellarg($pdf_first_page);
$jpg_escaped = escapeshellarg($jpg);
exec("convert $pdf_escaped $jpg_escaped");
答案 1 :(得分:1)
尝试将参数(文件名)放在双引号中(必须用反斜杠转义):
exec ("convert \"$pdf_first_page\" \"$jpg\"");
通常用双引号括起传递的shell命令参数 一个好的做法 - 即使是没有空格的参数/文件名
答案 2 :(得分:0)
Linux上的文件名中的空格必须在空格前使用\
注释转义字符进行转义。以下是一个例子。
file\ 1.pdf