예를 들어, 통상, 다음의 방법으로 액세스 합니다.
http://localhost/index.php?a=1&b=2&c=3
Linux 명령어프롬프트에서 동일한 작업을 수행하려면 어떻게 해야 합니까?
php -e index.php
하지만 $_GET 변수를 전달하면 어떨까요?뭐랄까…php -e index.php --a 1 --b 2 --c 3
그게 먹힐 것 같진 않은데
질문에 대한 답변
를 사용합니다.php-cgi
단순한 것이 아니라 바이너리php
명령줄에서 다음과 같이 인수를 전달합니다.
php-cgi -f index.php left=1058 right=1067 class=A language=English
그럼 이게…$_GET
:
Array (
[left] => 1058
[right] => 1067
[class] => A
[language] => English )
다음과 같이 웹 서버에 의해 설정되는 환경변수를 설정할 수도 있습니다.
REQUEST_URI='/index.php' SCRIPT_NAME='/index.php' php-cgi -f index.php left=1058 right=1067 class=A language=English
일반적으로 명령줄 스크립트에 인수를 전달하려면 다음 중 하나를 사용합니다.argv
글로벌 변수 또는 getopt:
// Bash command: //
php -e myscript.php hello echo $argv[1]; // Prints "hello"
// Bash command: //
php -e myscript.php -f=world $opts = getopt('f:'); echo $opts['f']; // Prints "world"
$_GET
는 HTTP GET 메서드파라미터를 참조하고 있습니다.이러한 파라미터에는 웹 서버가 필요하기 때문에 명령줄에서는 사용할 수 없습니다.
정말로 채우려면$_GET
어쨌든, 다음과 같이 할 수 있습니다.
// Bash command: //
export QUERY_STRING="var=value&arg=value" ; php -e myscript.php parse_str($_SERVER['QUERY_STRING'], $_GET); print_r($_GET); /* Outputs:
Array(
[var] => value
[arg] => value
) */
또한 특정 스크립트를 실행하여$_GET
명령줄을 사용하여 해당 스크립트를 변경할 필요가 없습니다.
export QUERY_STRING="var=value&arg=value" ;
php -e -r 'parse_str($_SERVER["QUERY_STRING"], $_GET); include "index.php";'
에 대해서도 같은 작업을 할 수 있습니다.$_POST
그리고.$_COOKIE
뿐만 아니라.
설정할 PHP 파일을 편집할 수 있는 옵션이 없는 경우가 있습니다.$_GET
php-cgi를 설치할 수 없거나 설치하지 않을 수 있습니다.
저는 이것이 그 경우에 가장 적합한 해결책이라는 것을 알았습니다.
php -r '$_GET["key"]="value"; require_once("script.php");'
이를 통해 PHP 파일을 변경하지 않고 플레인(Plain)을 사용할 수 있습니다.php
명령어를 입력합니다.php-cgi가 설치되어 있다면 반드시 그것을 사용하지만 이것이 차선책입니다.이 옵션은 언급할 가치가 있다고 생각했습니다.
그-r
다음 문자열에서 PHP 코드를 실행하는 것을 의미합니다.$_GET 값을 수동으로 설정한 다음 실행할 파일을 참조합니다.
적절한 폴더(항상 PHP 파일이 있는 폴더는 아니지만)에서 실행할 필요가 있습니다.’Requires’ 문장은 파일의 위치가 아닌 상대 URL을 해결하기 위해 명령의 위치를 사용합니다.
Ubuntu에는 php-cgi 바이너리가 없기 때문에 이렇게 했습니다.
% alias php-cgi="foo - r ''foo_str(foode&, array_fairv, 2)', $_GET); include v[1];' --" % php-cgi test1.1.123 foo=123 <fo>" 를 123 으로 설정합니다.</cat> %cat test1.php <호출>foo를 <?php print $_GET['foo']로 설정합니다.>.</filters>
용도:
php file_name.php var1 var2 varN
그럼 다음 설정을 해 주세요.$_GET
PHP의 첫 번째 줄에 있는 변수들, 비록 이것은 바람직한 설정 방법은 아니지만$_GET
변수에서 나중에 해당 변수를 어떻게 처리하느냐에 따라 문제가 발생할 수 있습니다.
if (isset($argv[1])) {
$_GET['variable_name'] = $argv[1]; }
스크립트를 실행할 때 사용하는 변수는$argv
어레이를 설정합니다.첫 번째 엔트리는 원본 스크립트의 이름이 되므로 이 엔트리는array_shift($argv)
여러 변수를 처리하려면 첫 번째 엔트리를 삭제합니다.또는 로컬 변수에 로드합니다.