[php] 웹 페이지를 통해 PHP 스크립트에 매개 변수를 전달하려면 어떻게합니까?

웹 페이지가로드 될 때마다 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 superglobal을 통해 액세스하는 것입니다.

http://yourdomain.com/path/to/script.php?argument1=arg1&argument2=arg2로 이동하십시오.

… 및 액세스 :

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

스크립트를 호출하는 위치 (명령 줄 또는 브라우저)에 관계없이 스크립트를 실행하려면 다음과 같은 것이 필요합니다.

편집 : 의견에서 Cthulhu가 지적한 것처럼 실행중인 환경을 테스트하는 가장 직접적인 방법은 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


답변