【问题标题】:Passing args to sh via php. First argument is received but not the second通过 php 将 args 传递给 sh。收到第一个参数,但没有收到第二个参数
【发布时间】:2016-11-21 22:19:14
【问题描述】:

第一个参数$htmlpageid可以被sh脚本中的$1引用。 第二个参数应该由$2 引用。对吧?

<?php
    $htmlpageid = uniqid();
    $days ="1";   
    $command = shell_exec("sudo ./createclientcert.sh $htmlpageid $days");    
?>

无论我尝试什么,但我无法将第二个参数 $days 传递给脚本。 我尝试了几种方法,但都没有通过第二个参数$days

【问题讨论】:

  • 什么没有收到第二个参数? mydomain.nl 的 URL,或者 createclientcert.sh 没有从 PHP 接收 $days? (它在这里与测试脚本一起工作得很好)....
  • @Kevin_Kinsey “还是 createclientcert.sh 没有从 PHP 收到 $days?”这正是我的故事所讲述的。 ;) 我已经更新了问题以减少混淆。 ;)
  • 任何错误信息?如果你调用脚本而不通过 sudo 调用它,它会通过 $2 吗?
  • @Kevin_Kinsey 已经解决了。感谢您与我一起思考,但我犯了一个非常愚蠢的错误。我自己回答了这个问题,但可以在 2 天内接受它作为答案。

标签: php shell exec


【解决方案1】:

我在 sh 脚本中通过 $2 引用 $days 犯了错误,因为我在函数定义中引用了它。

非常抱歉这个愚蠢的事情。 ;)

#!/bin/sh
newclient () {
    echo "# valid from "$(date) "till "$(date --date='+'$2' day') >> /root/$1.ovpn
}

相反,我应该在函数之外编写命令调用带有传递给脚本的参数的函数:

#!/bin/sh
newclient () {
    echo "# valid from "$(date) "till "$(date --date='+'$2' day') >> /root/$1.ovpn
}

newclient $1 $2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2019-03-26
    相关资源
    最近更新 更多