우리 모두는 PHP가 매우 뛰어난 동적 웹 개발 언어(빠른 속도, 짧은 개발 주기...)라는 것을 알고 있습니다. 그러나 PHP가 Shell 스크립트 작성용 언어로도 사용될 수 있다는 사실을 아는 사람은 많지 않습니다. PHP가 Shell 스크립트 작성용 언어로 사용될 때 Perl이나 Bash만큼 강력하지는 않지만 특히 좋은 장점이 있습니다. 저처럼 PHP에는 익숙하지만 Perl에는 별로 익숙하지 않은 사람들이 있습니다.
PHP를 쉘 스크립트 언어로 사용하려면 PHP를 Apache 모드가 아닌 바이너리 CGI로 컴파일해야 합니다. 바이너리 CGI 모드로 컴파일된 PHP는 몇 가지 보안 문제가 있으므로 해결할 수 있는 방법은 다음을 참조하세요. PHP 매뉴얼(http://www.php.net)을 참조하세요.
처음에는 쉘 스크립트 작성이 불편할 수 있지만 점차 나아질 것입니다. PHP를 일반적인 동적 웹 페이지 작성 언어로 사용하는 것과 쉘 스크립트 언어로 사용하는 것의 유일한 차이점은 쉘 스크립트라는 것뿐입니다. 첫 번째 줄에서 이 스크립트의 프로그램 경로를 설명해야 합니다:
#!/usr/local/bin/php -q
파일을 PHP에서 실행합니다. 매개변수 "-1"은 나중에 추가되므로 PHP는 HTTPHeader를 출력하지 않습니다(여전히 웹에서 동적 웹페이지로 사용해야 하는 경우 헤더 기능을 사용하여 HTTPHeader를 직접 출력해야 합니다). 물론, 여전히 Shell 스크립트에서 PHP의 열기 및 닫기 태그를 사용해야 합니다.
이제 PHP를 Shell 스크립트 언어로 사용하는 방법을 더 잘 이해하기 위해 예를 살펴보겠습니다.
#!/usr/local/bin/php -q
print("Hello, world!n")
? 🎜>
위 프로그램은 단순히 "Hello, world!"를 모니터에 출력합니다.
1. Shell 스크립트 실행 매개변수를 PHP에 전달합니다.
Shell 스크립트로 PHP를 실행할 때 일부 매개변수를 추가하는 경우가 많습니다. 쉘 스크립트에는 내장된 배열 "$argv"가 있습니다. "$argv" 배열을 사용하면 쉘 스크립트가 실행 중일 때 매개변수를 쉽게 읽을 수 있습니다("$argv[1]"는 첫 번째 매개변수인 "$argv[2에 해당함). ]"는 두 번째 매개변수에 해당합니다. 예를 들어 다음 프로그램은 다음과 같습니다.
#!/usr/local/bin/php -q
$first_name = $argv[1]
$last_name = $argv[2]
printf("안녕하세요, %s %s! 오늘 잘 지내세요?n", $first_name, $last_name); >?>
위 코드는 실행 시 두 개의 매개변수, 즉 성 및 이름이 필요합니다. 예를 들어 다음과 같이 실행합니다.
[ dbrogdon@artemis dbrogdon]$ scriptname.ph Darrell Brogdon
셸 스크립트는 모니터에 다음과 같이 출력됩니다.
안녕하세요, Darrell Brogdon!
[dbrogdon@artemis dbrogdon]$
PHP를 동적 웹 페이지 작성 언어로 사용하는 경우 "$argv" 배열도 포함하지만 여기서의 차이점은 PHP를 동적 웹 페이지 작성 언어로 사용하는 경우 Shell 스크립트 언어를 사용하는 경우 "$argv[0]"은 스크립트의 파일 이름에 해당하고 동적 웹 페이지 작성에 사용하는 경우 "$"입니다. argv[1]"은 QueryString의 첫 번째 매개변수에 해당합니다.
2. 대화형 Shell 스크립트 작성:
Shell 스크립트가 자체적으로 실행되고 상호작용성을 잃으면 의미가 없습니다. PHP를 사용하여 Shell 스크립트를 작성할 때 사용자가 입력한 정보를 어떻게 읽나요? 아쉽게도 PHP 자체에는 사용자 입력 정보를 읽는 함수나 메서드가 없지만, 다른 언어의 예를 따라 사용자 입력 정보를 읽는 "read" 함수를 작성할 수 있습니다.
function read() {
$fp = fopen('/dev/stdin', 'r')
$input = fgets($fp, 255) ;
fclose($fp)
return $input;
?> ;
위 기능은 Unix 시스템에서만 사용할 수 있다는 점에 유의하세요(다른 시스템에서는 이에 맞게 변경해야 함). 위 함수는 파일 포인터를 연 다음 255바이트 이하의 행을 읽은 다음(fgets가 수행하는 작업), 파일 포인터를 닫고 읽기 정보를 반환합니다.
이제 "읽기" 기능을 사용하여 이전에 작성한 프로그램 1을 수정하여 보다 "대화형"으로 만들 수 있습니다.
#!/usr /local/ bin/php -q
function read() {
$fp = fopen('/dev/stdin', 'r'); >$input = fgets($fp, 255);
fclose($fp)
return $input; 🎜>}
print("이름이 무엇입니까?")
$first_name = read()
print ("당신의 성은 무엇입니까?");
$last_name = read()
print("n안녕하세요, $first_name $last_name! !n");
?>
위 프로그램을 저장하고 실행하면 예상치 못한 내용이 나타날 수 있습니다. 현상: 입력의 마지막 줄이 세 줄이 되었습니다! 이는 "읽기" 함수에서 반환된 정보에 사용자 각 줄의 끝 개행 문자 "n"도 포함되어 있기 때문입니다. 이 문자는 끝 개행 문자를 제거하기 위해 "read"입니다. 함수를 수정해야 합니다:
function read() {
$fp = fopen('/dev/stdin', 'r')
$input = fgets($fp, 255)
fclose($fp)
$input = 찹($input); / 후행 공백 제거
return $input;
}
?> 다른 언어로 작성된 쉘 스크립트에 포함 PHP로 작성된 쉘 스크립트:
때때로 다른 언어로 작성된 쉘 스크립트에 PHP로 작성된 쉘 스크립트를 포함해야 할 수도 있습니다. 실제로는 매우 간단합니다.
#!/bin/bash
echo 이것은 코드의 Bash 섹션입니다. >
/usr/local/bin/php -q << EOF
print("코덴의 PHP 섹션입니다.")
?>
EOF
실제로 PHP를 호출하여 다음 코드를 구문 분석한 후 출력한 후 다음 코드를 다시 시도합니다. #!/bin/bash
echo 코드의 Bash 섹션입니다.
/usr/local/bin/php -q < EOF
$myVar =
print("코덴의 $myVar 섹션입니다."); >
?>
EOF
두 코드의 유일한 차이점은 "$myVar" 변수가 두 번째로 사용된다는 점을 알 수 있습니다. 실행해 보세요. PHP는 실제로 "분석 오류: 구문 분석 오류 - 라인 2"라는 오류 메시지를 표시했습니다. 이는 Bash의 변수도 "$myVar"이고 Bash 파서가 먼저 변수를 대체하기 때문입니다. 이 문제를 해결하려면 각 PHP 변수 앞에 ""를 추가해야 합니다.
이스케이프 문자를 사용하면 방금 코드는 다음과 같이 수정됩니다.
#!/bin/bash
echo 이것은 코드의 Bash 섹션입니다 .
/usr/local/bin/php -q << EOF
$myVar = 'PHP'
print("This 코드의 $myVar 섹션입니다.");
?>
EOF
자, 이제 코드를 작성할 수 있습니다. PHP에서는 나만의 쉘 스크립트를 만들었습니다. 모든 일이 잘 되길 바랍니다.
저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.
위 내용은 PHP를 쉘 스크립트 언어로 사용하는 방법과 관련된 내용을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.