我正在创建一些代码,将word文档的内容上传到服务器,提取文本,然后将其插入数据库。
exec("PATH=$PATH:/home1/myserver/bin && antiword " .
$_FILES['file']['tmp_name'], $mycontent);
出于某些奇怪的原因,$ mycontent始终是一个空数组。谷歌没那么有用。有谁知道我做错了什么?
答案 0 :(得分:1)
你的exec引用中的$ PATH试图转换为PHP $ PATH而不是BASH $ PATH。
您可以转义$(\$
)或使用单引号。
通常,您应该使用escapeshellarg()
或escapeshellcmd()
来使事情更安全一些。这本来可以防止这种情况发生。此外,如果您使用用户输入调用exec()
,它将有助于防止它们转义您的命令并调用自己的恶意shell命令。
修改强>
实际上,出于某种原因,您的文件名/路径可能会出现问题。开始简单吧。
这是否有效:
exec('/home1/myserver/bin/antiword ' .
escapeshellarg($_FILES['file']['tmp_name']), $mycontent);
如果没有,那是什么:
echo '/home1/myserver/bin/antiword ' .
escapeshellarg($_FILES['file']['tmp_name']);
您必须创建一个要测试的文件,并将其替换为$ _FILES中的文件。但这是否直接来自命令行呢?