【问题标题】:How to give php script POST arguments via command line如何通过命令行给php脚本POST参数
【发布时间】:2015-03-20 08:55:38
【问题描述】:

我正在调试一个 php 脚本,该脚本将由 javascript 函数调用并且具有 POST 参数。我想在命令行模式下测试它。我知道使用 php -a 选项可以做到这一点。但是一旦进入交互模式,我该如何设置参数?我怎么称呼我的php?我既不记得也不知道怎么做。

我的php脚本是:

<?php
$data = $_POST['string'];
$fname = $_POST['file'];
$dir=$_POST['dir'];
mkdir($dir);
$file = fopen($fname, 'w');
fwrite($file, $dir."\n");
fwrite($file, $data."\n");
fwrite($file, "/var/www/html/ChemAlive_app/SOFTWARE/utilities/"."\n");
fclose($file);
$saved = getenv("LD_LIBRARY_PATH");        // save old value
$newld = "/usr/local/NWChem/lib/";  // extra paths to add
if ($saved) { $newld .= ":$saved"; }           // append old paths if any
putenv("LD_LIBRARY_PATH=$newld");
$saved = getenv("PATH");        // save old value
$newld = "/usr/local/NWChem/bin/";  // extra paths to add
if ($saved) { $newld .= ":$saved"; }           // append old paths if any
putenv("PATH=$newld");
exec("cd $dir ;  /var/www/html/ChemAlive_app/SOFTWARE/ChemAliveExec/ReactionThermo ".$fname);
?> 

感谢您的帮助。

【问题讨论】:

  • 如果您愿意使用单独的控制台命令,use curl。你也可以用 PHP 来做,但是通过控制台的 cURL 更简洁。
  • 我同意,当您可以简单地重现 HTTP 请求时,尝试重现 Web 服务器环境太复杂了。
  • 这看起来很有希望,它是如何工作的?
  • 浏览器并不是唯一可以产生 HTTP 请求的东西。 curl 是一个命令行实用程序,可以做同样的事情。有无数可用的工具。 Google curl 和/或“REST API 测试工具”等。

标签: php


【解决方案1】:

您可以使用以下内容:

<?php
// check to see if php called from cmd line 
if (php_sapi_name() == 'cli') {
       //take vars from cmd line args argv[0] is script name
       $data = $argv[1];
       $fname = $argv[2];
       $dir = $argv[3];
} else {
       $data = $_POST['string'];
       $fname = $_POST['file'];
       $dir=$_POST['dir'];
}

然后在命令行调用脚本

/path/to/php /path/to/script.php 'some data' 'filename' 'dirname'

【讨论】:

    猜你喜欢
    • 2012-06-19
    • 2017-04-20
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多