Как передать параметры из bash в php скрипт? - PullRequest
22 голосов
/ 21 июля 2011

Я сделал скрипт bash, который запускает скрипт php.Он работает без параметров, но когда я добавляю параметры (id и url), возникают некоторые ошибки:

PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf                                                                                        .d/mcrypt.ini on line 1 in Unknown on line 0
Could not open input file: /var/www/dev/dbinsert/script/automatisation.php?                                                                                        id=1

Я запускаю php-скрипт из bash, например:

php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com

Ответы [ 3 ]

31 голосов
/ 21 июля 2011

Назовите это как:

php /path/to/script/script.php -- 'id=19&url=http://bkjbezjnkelnkz.com'

Кроме того, измените ваш PHP-скрипт для использования parse_str () :

parse_str($argv[1]);

Если индекс $_SERVER['REMOTE_ADDR'] не установлен.


Для более сложной обработки может потребоваться getopt () , но parse_str () - это быстрый и грязный способ заставить его работать.

6 голосов
/ 21 июля 2011

Вы не можете передать параметры запроса GET в интерфейс командной строки PHP. Либо передайте аргументы в качестве стандартных аргументов командной строки и используйте $argc и $argv globals для их чтения, либо (если вы должны использовать параметры GET / POST), вызовите скрипт через curl / wget и передайте параметры таким образом - при условии, что у вас есть скрипт, доступный через локальный веб-сервер.

Вот как вы можете передать аргументы для чтения $argc и $argv (- указывает, что все последующие аргументы должны идти в скрипт, а не в двоичный файл интерпретатора PHP):

php myfile.php -- argument1 argument2

5 голосов
/ 22 апреля 2015

- Вариант 1: php-cgi -

Используйте php-cgi вместо php для запуска вашего скрипта. Это самый простой способ, так как вам не нужно специально модифицировать свой php-код для работы с ним:

php-cgi -f /my/script/file.php id=19 myvar=xyz

- Вариант 2: если у вас есть веб-сервер -

Если файл php находится на веб-сервере, вы можете использовать wget в командной строке:

wget 'http://localhost/my/script/file.php?id=19&myvar=xyz'

ИЛИ:

wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz"

- Доступ к переменным в php -

В обоих вариантах 1 и 2 вы получаете доступ к следующим параметрам:

$id = $_GET["id"];
$myvar = $_GET["myvar"];
...