Как передать параметры в PHP скрипт через веб-страницу?

Я вызываю PHP script всякий раз, когда загружается веб-страница. Однако есть параметр, который должен выполнить PHP скрипт (который я обычно передаю через командную строку, когда я тестирую script).

Как передать этот аргумент каждый раз при запуске script при загрузке страницы?

Ответ 1

Предположительно, вы передаете аргументы в командной строке следующим образом:

php /path/to/wwwpublic/path/to/script.php arg1 arg2

... и затем обращаясь к ним в script:

<?php
// $argv[0] is '/path/to/wwwpublic/path/to/script.php'
$argument1 = $argv[1];
$argument2 = $argv[2];
?>

Что вам нужно делать при передаче аргументов через HTTP (доступ к script через Интернет), используется строка запроса и доступ к ним через супергелобал $_GET:

Перейдите к http://yourdomain.com/path/to/script.php?argument1=arg1&argument2=arg2

... и доступ:

<?php
$argument1 = $_GET['argument1'];
$argument2 = $_GET['argument2'];
?>

Если вы хотите, чтобы script запускался независимо от того, откуда вы его вызываете (в командной строке или из браузера), вам нужно что-то вроде следующего:

EDIT:, как отметил Ктулху в комментариях, самый прямой способ проверить, в какой среде вы работаете, использовать PHP_SAPI. Я обновил код соответственно:

<?php
if (PHP_SAPI === 'cli') {
    $argument1 = $argv[1];
    $argument2 = $argv[2];
}
else {
    $argument1 = $_GET['argument1'];
    $argument2 = $_GET['argument2'];
}
?>

Ответ 2

$argv[0]; // the script name
$argv[1]; // the first parameter
$argv[2]; // the second parameter

Если вы хотите, чтобы все script выполнялись независимо от того, откуда вы его вызывали (из командной строки или из браузера), вам нужно что-то вроде следующего:

<?php
if ($_GET) {
    $argument1 = $_GET['argument1'];
    $argument2 = $_GET['argument2'];
} else {
    $argument1 = $argv[1];
    $argument2 = $argv[2];
}
?>

Для вызова из командной строки chmod 755 /var/www/webroot/index.php и использования

/usr/bin/php /var/www/webroot/index.php arg1 arg2

Для вызова из браузера используйте

http://www.mydomain.com/index.php?argument1=arg1&argument2=arg2