我試圖執行多個命令在PHP中使用exec()和shell_exec,但我得到一個空值回來,我不應該和沒有發生(如果我複製並粘貼在命令行下面的字符串,它會做工精細,並完成所需的工作),這是我使用的命令:php命令行exec()多個執行和目錄?
$command = "cd /../Desktop/FolderName;";
$command .= 'export PATH=$PATH:`pwd`;';
$command .= 'Here i execute a compiler;';
,然後我使用escapeshellcmd()將
$escaped_command = escapeshellcmd($command);
然後
shell_exec($escaped_command);
任何想法我做錯了,我也試過escapeshellarg()而不是escapeshellcmd()?
解決方案:問題是執行編譯器對其他所有者的許可是非,這是問題所在。 ,因爲當您在php中使用exec()
函數時,文件的所有者將是www-data,因此您需要爲ubuntu或任何基於Linux的操作系統的ACL授予www-data權限(您可以通過做這個exec('whoami')
),或者你需要執行的文件。
你真的是指'/../桌面/文件夾名稱?因爲這與'/ Desktop/FolderName'相同,這可能不是你想要的。 – larsks
這是相同的/桌面/文件夾名稱,這是我想要的但這並不影響任何東西,因爲它仍然將目錄更改爲我需要的文件夾 –
我總是會使用完整的,而不是相對的路徑,這樣的事情。 – 2012-05-21 00:01:40