【问题标题】:How can I get php variables into a linux script?如何将 php 变量放入 linux 脚本中?
【发布时间】:2013-11-04 15:10:39
【问题描述】:

我正在尝试研究如何将变量从 php 获取到脚本中,因为我想创建一个用户注册页面,以便用户可以注册并且 php 将调用脚本并将变量发送给它。

特别是我遇到问题的这一行(它在 php 页面中):

PHP: $结果 = bash /home/*******/public_html/add_user $login '$pwd';

add_user.sh:

#!/bin/bash
adduser -u "$1" -p "$2" -g users -s /bin/bash

【问题讨论】:

标签: php linux bash call


【解决方案1】:

exec

$results = exec("bash /home/*******/public_html/add_user $login '$pwd'");

请记住,运行此进程的用户(网络用户,可能是 www-data、www、web 等)必须具有 sudo 或提升的访问权限才能执行此操作。我还想提醒您不要这样做,除非您真的花时间考虑了将其暴露在网络上时的所有影响和后果。

【讨论】:

    【解决方案2】:

    如果你真的想从 PHP 调用外部程序,你可以使用像 system()exec() 这样的调用来做到这一点。您必须使用 PHP 变量在 PHP 中构建命令行。

    话虽如此,这种方法是 Web 应用程序中最常见的安全漏洞来源之一。您必须竭尽全力确保您将要传递的数据有效且正确(想想如果$login 包含"; rm -rf /" 会发生什么)。

    另一个考虑因素是adduser 需要超级用户权限。上次我检查时,shell 脚本不支持 SUID,所以我不确定直接的方法是否可行 - 您可能需要使用 sudo 或在 Perl 中重写脚本(例如)并使用 suidperl

    【讨论】:

      【解决方案3】:

      您可以从 PHP 脚本中回显变量并将其读入 shell 变量,如下所示:

      read -r user pass < <(/path/to/php/script.php)
      

      【讨论】:

        猜你喜欢
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        相关资源
        最近更新 更多