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