【问题标题】:Php shell_exec not running [duplicate]Php shell_exec没有运行[重复]
【发布时间】:2018-09-26 11:47:58
【问题描述】:

此代码在从 Web 调用的 PHP 代码中不运行。但它在cli上正常运行。 sh 文件的 chmod 是 777。

$c = shell_exec('printf "{$res}" | ./new-openvpn-client.sh {$user}');

【问题讨论】:

  • 请注意,当使用单引号 (') 时,您无法评估 var(当您尝试使用 $res$user 时)
  • 我该如何运行它?
  • $page = shell_exec("printf '".$res."' | ./new-openvpn-client.sh ".$user);不工作

标签: php


【解决方案1】:

正如另一个答案中提到的,单引号字符串不会解析变量,因此您需要使用双引号。但是您还需要确保正确引用和清理外部命令的参数。 Use escapeshellarg() for that.

$res = escapeshellarg($res);
$user = escapeshellarg($user);
$c = shell_exec("printf $res | ./new-openvpn-client.sh $user");

./new-openvpn-client.sh 不太可能正确解决。将脚本放在/usr/local/bin/ 等合理位置,并在命令中提供完整路径。

【讨论】:

  • 有趣的是,它不会触发 shel exec,但会在每个解决方案中产生回声。是否有安全模式或其他东西。我已将 sh 放在 /usr/bin 下
  • 这也不起作用 $re=shell_exec('useradd asdfg1');这是 openvpn 方法 useradd 和 passwd
【解决方案2】:

这是应用程序可执行文件的权限问题。我已经通过授予 apache 用户真正的权限来解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多