【发布时间】:2014-09-02 19:51:34
【问题描述】:
我正在尝试从 shell 到 PHP 来回传递参数,然后再返回。在我的简单测试中,我很容易从 shell 进入 PHP,但是没有运气将字符串取出。我已经尝试了 escapeshellarg 和 escapeshellcmd,但都没有成功。
壳
#!/bin/sh
# set a date and time variables, in the form of YYYY-MM-DD and HH:MM:SS
dateVar=`date +%Y-%m-%d`
timeVar=`date +%H_%M`
# Launching PHP
runPHP=`which php`
$runPHP calledPHP.php $timeVar $dateVar
# Returned from PHP
passTime=$1
echo "$passTime"
passDate=$2
echo "$passDate"
PHP
<?php
setlocale(LC_CTYPE, "en_US.UTF-8");
echo "PHP called.\n";
$logTime = $argv[1]."\n";
// echo $logTime;
$logDate = $argv[2]."\n";
// echo $logDate;
$passTime = escapeshellarg('Time: $logTime');
$passDate = escapeshellarg('Date: '.$logDate);
?>
运行 shell,它返回的唯一回声是“PHP 调用”。如您所见,我在最后两个 php 变量中尝试了两种不同的语法。两者似乎都不起作用。有没有更好的功能呢?或者,我只是使用了错误的语法?
提前感谢您的任何建议
【问题讨论】:
-
除了你的
php calledecho,你的 PHP 代码不会输出任何东西。而且您的$logTime行不正确。 PHP 中的'-quoted 字符串不会插入变量。你的$passTime将包含$、l、o、g等... -
我最初找到了
$passDate的示例,这对我来说看起来是正确的,但我同意'引用的字符串。我只是为了完整性而尝试它,因为它是我发现的一个“工作示例”,尽管它显然对我不起作用。我并没有真正尝试从 PHP 中获取任何输出,除了将字符串从 PHP 传递回包含的 shell 脚本。
标签: php shell argument-passing