Shell запустить / выполнить php скрипт с параметрами

Мне нужно выполнить php-файл с параметрами через оболочку.

вот как я запустил php-файл:

php -q htdocs / file.php

Мне нужно передать параметр 'show' и

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

не работает

Если кто-то может указать мне, какую команду выполнить, чтобы заставить файл php выполнить с заданными параметрами, это было бы очень признательно. Если нет, попробуйте привести меня в правильном направлении.

test.php:

<?php print_r($argv); ?> 

Оболочка:

 $ php -q test.php foo bar Array ( [0] => test.php [1] => foo [2] => bar ) 

Если у вас есть веб-сервер (не только установлен только PHP-интерпретатор, но и LAMP / LNMP / etc) – попробуйте это

 wget -O - -q -t 1 "http://mysite.com/file.php?show=show_name" >/dev/null 2>&1 

где:

  • «-O -» – (буква «O», а не ноль!) Перенаправить «скачанный html» в stdout
  • «> / Dev / null 2> & 1» – перенаправить вывод stdout и stderr в никуда
  • «-q» – тихий wget run
  • «-t 1» – всего 1 попытка подключения (не как по умолчанию 20)

В «exec» PHP это будет так:

 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"); 

Таким образом, вам не нужно менять свои скрипты для обработки argc / argv и, как обычно, может использовать $ _GET.

Если вы хотите, чтобы задания выполнялись в фоновом режиме – см. Ex. Unix / Windows, установить фоновый процесс? от php-кода

Я использую подход с wget в моих заданиях cron; Надеюсь, поможет.

Вам нужно прочитать параметры командной строки из $ argc и $ argv .

Использование вопросительного знака – это то, что вы делаете в URL-адресе и не имеет ничего общего с выполнением PHP из командной строки.

См. Также: http://www.sitepoint.com/php-command-line-1/

В дополнение к другим ответам (что вполне правильно) вы также можете передавать аргументы в качестве параметров среды, например:

 FOO=42 BAR=quux php test.php 

Затем они будут доступны в $_ENV .

Если вы используете его из файла PHP, вы можете использовать popen () и сделать что-то вроде этого:

 $part = $show_name; //or whatever you want with spaces $handle = popen("php -q nah.php -p=". escapeshellarg($part) . " 2>&1", "r"); 

Это использует функцию escapeshellarg (), чтобы обернуть переменную $part в кавычки (и избежать любых кавычек внутри нее), чтобы она могла безопасно использоваться в качестве аргумента оболочки.