Мне нужно выполнить 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
где:
В «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
в кавычки (и избежать любых кавычек внутри нее), чтобы она могла безопасно использоваться в качестве аргумента оболочки.