웹 페이지가로드 될 때마다 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