Shell使用参数运行/执行php脚本

Pat*_*rio 35 php parameters shell cron

我需要通过shell执行带参数的php文件.

这是我将如何运行PHP文件:

php -q htdocs/file.php

我需要通过和传递参数'show'

php -q htdocs/file.php?show = show_name

不起作用

如果有人能告诉我执行什么命令以使用set参数执行php文件,那将非常感激.如果没有,试着引导我正确的方向.

sch*_*eck 46

test.php的:

<?php
print_r($argv);
?>
Run Code Online (Sandbox Code Playgroud)

贝壳:

$ php -q test.php foo bar
Array
(
    [0] => test.php
    [1] => foo
    [2] => bar
)
Run Code Online (Sandbox Code Playgroud)

  • 好的,所以我无法通过PHP中的$ _GET接收参数,但通过$ argv,谢谢.我花了一段时间来弄清楚这一点. (2认同)

Fla*_*orm 5

如果你有网络服务器(不仅安装了php解释器,而且安装了LAMP/LNMP /等) - 试试吧

wget -O - -q -t 1 "http://mysite.com/file.php?show=show_name" >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

哪里:

  • «-O - » - (字母"O",而不是零!)将"下载的html"重定向到stdout
  • «>/dev/null 2>&1» - 将stdout和stderr输出重定向到无处
  • «-q» - 安静的wget运行
  • «-t 1» - 只需1次尝试连接(不像默认的20)

在PHP的"exec"中,它会像这样:

function exec_local_url($url) {
  exec('/usr/bin/wget -O - -q -t 1 "http://'. $_SERVER['HTTP_HOST'] .'/'
    . addslashes($url) . '" >/dev/null 2>&1'
  );
}

// ...

exec_local_url("file.php?show=show_name");
exec_local_url("myframework/seo-readable/show/show_name");
Run Code Online (Sandbox Code Playgroud)

因此,您不需要更改脚本来处理argc/argv,并且可以像往常一样使用$ _GET.

如果你想在后台运行工作 - 参见前面.Unix/Windows,安装后台进程?来自php代码

我在我的cron工作中使用wget方法; 希望能帮助到你.