我正在尝试使用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的操作系统中获得www数据的权限(你可以知道)执行此操作的所有者exec('whoami')
),或者您需要执行的文件。
答案 0 :(得分:0)
(抱歉,我的英文不好) 在Linux上,您可以在Shell脚本中添加命令。
您可以将其放在任何文件中:
#!/bin/bash
cd /../Desktop/FolderName
export PATH=$PATH:`pwd`
EXECUTE COMPILER
将此保存为fille.sh
然后,添加执行权限: chmod + x path / to / file.sh
从PHP中,您可以调用此脚本执行: shell_exec('sh path / to / file.sh');
希望这有帮助!