【问题标题】:Cant pass a variable from PHP to bash无法将变量从 PHP 传递给 bash
【发布时间】:2014-11-25 20:58:30
【问题描述】:

我试图将一个变量从 php 传递到 bash,但我遇到了问题。

这是 PHP 代码的 sn-p。

<?php
$shopidX = escapeshellarg('$shop_id');
exec("~/bin/notaproblem $shopidX");
<?

这里是 bash 中定义变量的地方。

shopidX=$1

现在变量不起作用。我尝试在 bash 脚本(例如)中硬编码变量

shopidX=89234796743682446811473645238461264123465243614537285417254237645712345768235472364536217481238431654187

它确实有效。 $shop_id 也是 100% 在 PHP 中定义的。有什么问题?

【问题讨论】:

  • 为什么要使用单引号? php.net/manual/en/…
  • 是的,你所做的只是执行~/bin/notaproblem $shopidX

标签: php bash variables


【解决方案1】:

错误的引用:

$shopidX = escapeshellarg('$shop_id');
                          ^--------^

'-quotes 不插入变量:

$foo = 'bar;
echo '$foo'; // outputs $, f, o, o
echo "$foo"; // outputs b, a, r

您正在向 shell 发送 $sh 等,而不是变量的内容。

事实上,你根本不需要引号

$shopidX = escapeshellarg($shop_id);

【讨论】:

  • 不可能。 '-引用的字符串从不允许变量。
【解决方案2】:

HTML 代码:

<html>
<form>
<input name="name">
</form>
</html>

PHP 代码:

<?php 
$name = $_POST['name'];
$output = shell_exec("C:/xampp/folder/scriptname.sh $name");
?>

Shell 脚本:

#!/bin/bash -e
name=$1
echo name=${name:-$1}

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    相关资源
    最近更新 更多