1

我正在尝试使用 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')),或通过您需要执行的文件。

4

1 回答 1

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');

希望这可以帮助!

于 2012-05-21T00:04:35.887 回答