У меня есть файл PHP, который необходимо запустить из командной строки (через crontab).  Мне нужно передать type=daily в файл, но я не знаю, как это сделать.  Я пытался: 
 php myfile.php?type=daily 
но эта ошибка была возвращена:
Не удалось открыть входной файл: myfile.php? Type = daily
Что я могу сделать?
  Аргумент ?type=daily (заканчивается в массиве $_GET ) действителен только для страниц с веб-доступом. 
  Вам нужно будет вызывать его как php myfile.php daily и извлекать этот аргумент из массива $argv (который будет $argv[1] , так как $argv[0] будет myfile.php ). 
Если страница используется как веб-страница, есть два варианта, которые вы могли бы рассмотреть. Либо доступ к нему с помощью сценария оболочки и wget, и вызов из cron:
 #!/bin/sh wget http://location.to/myfile.php?type=daily 
Или проверьте файл php, вызван ли он из командной строки или нет:
 if (defined('STDIN')) { $type = $argv[1]; } else { $type = $_GET['type']; } 
  (Примечание: вам, вероятно, понадобится / нужно проверить, действительно ли $argv содержит достаточно переменных и тому подобное) 
  Просто передайте его как обычные параметры и получите доступ к нему в PHP с помощью массива $argv . 
 php myfile.php daily 
и в myfile.php
 $type = $argv[1]; 
параметры отправляются по индексу, как и другие приложения
 php myfile.php type=daily 
и тогда вы можете их убить так
 <?php if (count($argv) == 0) exit; foreach ($argv as $arg) echo $arg; ?> 
  Эти строки преобразуют аргументы вызова CLI, такие как php myfile.php "type=daily&foo=bar" в известный $_GET -array: 
 if (!empty($argv[1])) { parse_str($argv[1], $_GET); } 
  Хотя довольно сложно перезаписать глобальный $_GET -array, он быстро преобразует все ваши скрипты, чтобы принимать аргументы CLI. 
Подробнее см. http://php.net/manual/en/function.parse-str.php .
  Сохраните этот код в файле myfile.php и запустите его как php myfile.php type=daily 
 <?php $a = $argv; $b = array(); if (count($a) == 0) exit; foreach ($a as $arg){ list($x,$y) = explode('=', $arg); $b["$x"] = $y; } ?> 
  Если вы добавите var_dump($b);  перед тегом ?> вы увидите, что массив $b содержит type => daily . 
 <?php if (count($argv) == 0) exit; foreach ($argv as $arg) echo $arg; ?> 
Этот код не должен использоваться. Прежде всего CLI называется: / usr / bin / php phpscript.php будет иметь одно значение argv, которое является именем скрипта
 array(2) { [0]=> string(13) "phpscript.php" } 
Это всегда будет выполняться, так как будет иметь 1 или 2 аргумента passe
Я настоятельно рекомендую использовать getopt.
Документация по адресу http://php.net/manual/en/function.getopt.php
Если вы хотите распечатать справку для своих опций, посмотрите на https://github.com/c9s/GetOptionKit#general-command-interface
 if (isset($argv) && is_array($argv)) { $param = array(); for ($x=1; $x<sizeof($argv);$x++) { $pattern = '#\/(.+)=(.+)#i'; if (preg_match($pattern, $argv[$x])) { $key = preg_replace($pattern, '$1', $argv[$x]); $val = preg_replace($pattern, '$2', $argv[$x]); $_REQUEST[$key] = $val; $$key = $val; } } } 
Я поставил параметры в $ _REQUEST
$ _REQUEST [$ key] = $ val;
и также можно использовать непосредственно
$$ ключ = $ Вэл
используйте это так:
myFile.php / key = val