我的问题:上传文件后,我在php中使用exec()
来转换Powerpoint文件为PDF。
我使用unoconv处理转换。我的脚本中的代码是执行shell命令的简单exec(
):
$shellcommand = '/usr/bin/unoconv -f pdf -o "'.$filename_download.'" "'.$filename_upload.'"';
exec($shellcommand, $ret);
因此,结果字符串$shellcommand
是
/usr/bin/unoconv -f pdf -o "<dir>/262341_Keller.pdf" "<dir>/262341_Keller.pptx"
但是现在下一个文档的文件名中包含特殊字符,$ filename_upload和$ filename_download中的文档名称为“262342_Hänßler.pptx/ .pdf”
如果我使用它,则exec()字符串为:
/usr/bin/unoconv -f pdf -o "<dir>/262342_Hänßler.pdf" "<dir>/262342_Hänßler.pptx"
但是在这种情况下,文档将不会转换...
我使用utf8_decode()
和escapeshellarg(
进行了尝试),但没有任何效果!
如果我重命名同一文档,那么它将起作用
如何在$ filename中转义字符,使其与exec()一起运行?