0
我在PHP中遇到了shell_exec()函数的一个有趣的情况。此命令的工作:PHP shell_exec()命令中引号的用法
$res = shell_exec("mdb-export -D \"%d/%m/%y\" ".$this->mdbFileName." ".$tableName." &> " . $outputFile);
但是,此命令不起作用:
$res = shell_exec("mdb-export -D \"%d/%m/%y\" ".$this->mdbFileName." \"".$tableName."\" &> " . $outputFile);
当一个shell输入命令(无论哪种方式 - 带或不带周围的表名引号),它工作正常。我真的想知道为什么第一套逃脱的报价并不影响了shell_exec():
\"%d/%m/%y\"
但第二组:
\"".$tableName."\"
不允许了shell_exec执行。仅供参考:脚本中的所有文件名变量均为完整文件路径。在壳体中进行测试时,它们以完全相同的方式输入。有什么想法吗?
编辑:失败后,shell_exec返回NULL并且不执行命令。
不仅仅是说它不起作用,而是提供错误信息或进一步了解实际问题。 – Devon
嗨德文,没有错误信息。 shell_exec()返回NULL并且不执行该命令。我将编辑我的帖子以反映这一点。 – user2395126
尝试在没有重定向的情况下回显它。 shell_exec(“echo mdb-export ...”);看看实际执行的是什么。 – Devon