如何在exec()的文件名中使用特殊字符

时间:2018-11-23 11:22:22

标签: php exec filenames

我的问题:上传文件后,我在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()一起运行?

0 个答案:

没有答案