php
  • shell
  • cmd
  • exec
  • shell-exec
  • 2012-05-20 178 views 0 likes 
    0

    我試圖執行多個命令在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')),或者你需要執行的文件。

    +0

    你真的是指'/../桌面/文件夾名稱?因爲這與'/ Desktop/FolderName'相同,這可能不是你想要的。 – larsks

    +0

    這是相同的/桌面/文件夾名稱,這是我想要的但這並不影響任何東西,因爲它仍然將目錄更改爲我需要的文件夾 –

    +0

    我總是會使用完整的,而不是相對的路徑,這樣的事情。 – 2012-05-21 00:01:40

    回答

    0

    (對不起,我的英文很爛) 在Linux上,你可以在shell腳本中添加你的命令。

    你可以把這個在任何文件中:

    #!/bin/bash 
    cd /../Desktop/FolderName 
    export PATH=$PATH:`pwd` 
    EXECUTE COMPILER 
    

    而這個保存爲fille.sh

    然後,添加執行權限: 使用chmod + X路徑/到/ file.sh

    從PHP,你可以調用這個腳本執行: shell_exec('sh path/to/file.sh');

    希望這會有所幫助!

    +0

    它仍然無法正常工作,我應該從某處啓用shell_exec()函數嗎? –

    +0

    您是否嘗試過在PHP腳本之外執行Shell腳本rfom? – Yefb

    +0

    是的,它工作正常。我正在研究,我發現一些人在討論啓用和禁用exec()函數。如果安全模式打開但安全模式關閉在我的php.ini。並且它仍然不能正常工作 –

    相關問題