PHP 命令行 exec() 多个执行和目录


php command line exec() multiple execution and directories?

我正在尝试使用 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'(;

希望这有帮助!