php
  • shell
  • cmd
  • exec
  • shell-exec
  • 2012-05-20 177 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。并且它仍然不能正常工作 –

    相关问题