【问题标题】:Call PHP document with SSH includes get variable使用 SSH 调用 PHP 文档包括获取变量
【发布时间】:2011-11-20 11:31:02
【问题描述】:

我从 cron 作业调用的 PHP 文档中有以下内容。

if (is_file($docRoot . $row['cron_action_script_path'])) {

    system("php " . $docRoot . $row['cron_action_script_path'] . $row['params']);
}

但是,我收到了错误 Could not open input file: /path/to/file.php?params=1

但是我已经通过了 if 语句 is_file('/path/to/file.php')

因此,在对 PHP 文档的 SHH 调用中包含 get 变量似乎存在问题。

这有什么问题吗?我需要能够以某种方式动态调用我的参数。

【问题讨论】:

  • 发布您的 cron 作业的命令。
  • 我知道工作正常。我通过不带参数运行确认(即system('php path/to/file.php'))并得到了正确的响应。

标签: php ssh system require-once


【解决方案1】:
if (is_file($docRoot . $row['cron_action_script_path'])) {
    $_GET['params'] = $row['params'];
    include $docRoot . $row['cron_action_script_path'];
}

【讨论】:

  • 根据 OP 的代码,$row['params'] 似乎包含 ?params=1(其他行可能包含更多字段),因此他将有更多工作要做。
  • 我认为这可行,但$row['params'] 是一个字符串,可以是从?id=1?id=1&foo=2&bar=3 的任何位置,所以我必须重新解析$_GET['params']? parse_str 可能吗?
  • @stevether:是的, parse_str 将是要走的路。
【解决方案2】:

您正在调用 php CLI 并尝试使用特定于网络服务器的 QUERY STRING 数据。您要么需要修改脚本以接受参数,要么使用 lynxcurlwget 等程序调用它

所以让系统调用类似于:

system("wget http://yourdomain.com/path/to/file.php?params=1 > /dev/null");

然后应该使用允许QUERY STRING 的网络服务器执行该脚本。

编辑:

为使用您的变量量身定制:(注意 .com 后可能需要一个斜杠)

system("wget http://yourdomain.com" . $row['cron_action_script_path'] . $row['params'] . " > /dev/null");

【讨论】:

  • 您能否详细说明“修改脚本”?我还尝试使用您列出的程序(按顺序)进行系统调用:Alert!: Unable to access document. lynx: Can't access startfilecurl: (3) <url> malformedUnsupported scheme.
  • 对于改造,您只需要重写以接受参数,有关如何处理的链接,请参见 ceejayoz 的帖子。至于您的 lynx 等,您的网址似乎不好,如果您可以发布运行它的代码,我可以帮助您修复错误。
  • 这看起来很有希望,但我有一个 .htaccess 阻止访问该文件的目录。内部没有办法吗?
  • 看看上校 Shrapnel 的帖子。他的方式可以在内部完成,只是可能需要一些调整。
【解决方案3】:

尝试使用is_readable 而不是is_file。文件可以存在而不被当前用户读取。

但是,像这样传递参数是行不通的。您不能在命令行上执行 $_GET 变量。看看how PHP expects and handles commandline arguments

【讨论】:

  • 我试过了,它通过了。问题不一定是检查它是否是文件,而是将参数传递给所述文件。
  • 当您输入该评论时,我正在编辑中解决这个问题。见上文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 2012-07-27
相关资源
最近更新 更多