我正在尝试使用 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((?
解决方案:问题是执行编译器对其他所有者的权限是非的,这就是问题所在。因为当你在PHP中使用exec()
函数时,文件的所有者将是www-data,所以你需要从ubuntu的ACL或任何基于Linux的操作系统(你可以通过这样做来了解所有者exec('whoami')
(,或者通过你需要执行的文件。
(对不起,我的英语不好(在 Linux 上,您可以在 Shell 脚本中添加命令。
你可以把它放在任何文件中:
#!/bin/bash
cd /../Desktop/FolderName
export PATH=$PATH:`pwd`
EXECUTE COMPILER
并将其另存为 fille.sh
然后,添加执行权限: chmod +x 路径/到/文件.sh
从 PHP 中,您可以调用此脚本执行: shell_exec('sh path/to/file.sh'(;
希望这有帮助!