繁体   English   中英

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的操作系统中为www-data授予权限(您可以知道所有者通过执行exec('whoami') )或需要执行的文件。

(对不起我的英语不好),在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');

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM