我正在尝试使用 exec() 和 shell_exec 在 php 中执行多个命令,但我得到了一个我不应该返回的空值,并且没有任何事情发生(如果我在命令行中复制并粘贴下面的字符串,它将工作正常并完成所需的工作)这是我正在使用的命令:
$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()?
解决方案:问题是其他所有者的执行编译器的权限是非的,这就是问题所在。因为当您exec()
在 php 中使用函数时,文件的所有者将是 www-data,因此您需要从 ubuntu 的 ACL 或任何基于 linux 的操作系统中授予 www-data 的权限(您可以通过这样做来了解所有者exec('whoami')
),或通过您需要执行的文件。