Я вызываю PHP-скрипт всякий раз, когда загружается веб-страница. Тем не менее, есть параметр, который должен запускать скрипт PHP (который я обычно передаю через командную строку, когда я тестирую скрипт).
Как передать этот аргумент каждый раз, когда скрипт запускается при загрузке страницы?
Предположительно, вы передаете аргументы в командной строке следующим образом:
php /path/to/wwwpublic/path/to/script.php arg1 arg2
… и затем доступ к ним в скрипте:
<?php // $argv[0] is '/path/to/wwwpublic/path/to/script.php' $argument1 = $argv[1]; $argument2 = $argv[2]; ?>
Что нужно делать при передаче аргументов через HTTP (доступ к скрипту через Интернет), используется строка запроса и доступ к ним через суперглобальный файл $ _GET:
Перейдите на страницу http://yourdomain.com/path/to/script.php?argument1=arg1&argument2=arg2.
… и доступ:
<?php $argument1 = $_GET['argument1']; $argument2 = $_GET['argument2']; ?>
Если вы хотите, чтобы сценарий запускался независимо от того, где вы его вызываете (в командной строке или в браузере), вам понадобится следующее:
EDIT: как отметил Ктулху в комментариях, самый прямой способ проверить, в какой среде вы работаете, – использовать константу PHP_SAPI . Я обновил код соответственно:
<?php if (PHP_SAPI === 'cli') { $argument1 = $argv[1]; $argument2 = $argv[2]; } else { $argument1 = $_GET['argument1']; $argument2 = $_GET['argument2']; } ?>
$argv[0]; // the script name $argv[1]; // the first parameter $argv[2]; // the second parameter
Если вы хотите, чтобы весь сценарий запускался независимо от того, где вы его вызываете (в командной строке или в браузере), вам понадобится следующее:
<?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