2025. 2. 26. 14:43ㆍPHP
1. PHP CLI 소개
PHP는 주로 웹 서버에서 실행되지만, CLI를 통해서도 실행할 수 있습니다. CLI 환경에서 PHP 스크립트를 실행하면, 서버와의 연동 없이 독립적으로 프로그램을 실행할 수 있습니다.
2. PHP CLI 실행 방법
PHP CLI 프로그램을 실행하려면 터미널에서 php 명령어를 사용합니다.
php yourscript.php
이렇게 하면 yourscript.php 파일이 CLI 환경에서 실행됩니다.
3. 기본적인 PHP CLI 프로그램 예제
PHP CLI 프로그램은 웹 환경에서와 비슷하게 작성할 수 있습니다. 예를 들어, 간단한 "Hello, World!" 프로그램은 다음과 같습니다:
#!/usr/bin/php
<?php
echo "Hello, World!\n";
?>
파일의 첫 줄인 #!/usr/bin/php는 PHP 실행 파일의 경로를 지정하며, 이를 통해 직접 실행할 수 있습니다.
4. 인자(Arguments) 처리
CLI 프로그램은 사용자가 제공한 인자를 처리할 수 있습니다. PHP에서 $_SERVER['argv'] 배열을 통해 명령어 인자에 접근할 수 있습니다.
#!/usr/bin/php
<?php
if ($argc > 1) {
echo "Hello, " . $argv[1] . "!\n";
} else {
echo "Hello, World!\n";
}
?>
이 스크립트는 사용자가 이름을 입력하면 "Hello, [name]!"을 출력합니다.
5. 사용자 입력 받기
fgets() 함수를 이용해 사용자로부터 입력을 받을 수 있습니다.
#!/usr/bin/php
<?php
echo "What's your name? ";
$name = fgets(STDIN);
echo "Hello, $name\n";
?>
6. 다양한 명령어 옵션 처리 (getopt)
복잡한 명령줄 옵션을 처리하기 위해 getopt() 함수를 사용할 수 있습니다. 이 함수는 명령어 옵션을 파싱하여, 프로그램에서 다양한 인자를 쉽게 처리할 수 있게 도와줍니다.
#!/usr/bin/php
<?php
$options = getopt("n::");
if (isset($options['n'])) {
echo "Hello, " . $options['n'] . "!\n";
} else {
echo "Hello, World!\n";
}
?>
이 스크립트는 -n 옵션을 처리하여 사용자에게 인사를 건넵니다.
7. PHP CLI에서 자주 사용하는 함수들
- fgets(STDIN) : 표준 입력을 받기
- echo : 출력하기
- getopt() : 명령줄 옵션 파싱
- exit() : 프로그램 종료
8. PHP CLI에서의 파일 처리
파일을 다루는 PHP CLI 프로그램에서는 fopen(), fread(), fwrite(), fclose() 같은 파일 관련 함수들을 사용합니다. 예를 들어, 파일을 읽어서 출력하는 예제는 다음과 같습니다:
#!/usr/bin/php
<?php
$file = fopen("example.txt", "r");
if ($file) {
while (($line = fgets($file)) !== false) {
echo $line;
}
fclose($file);
} else {
echo "Error opening file.\n";
}
?>
9. 종료 코드 (Exit Code)
CLI 프로그램은 종료 코드를 반환할 수 있습니다. 성공적인 종료는 exit(0)으로, 오류가 있을 경우 exit(1)과 같은 방식으로 처리합니다.
10. PHP CLI 스크립트 배포
PHP CLI 프로그램을 서버나 다른 시스템에 배포할 때는, PHP가 설치된 환경에서 실행할 수 있는지 확인해야 합니다. 또한 #!/usr/bin/php와 같은 해시뱅을 이용해 독립적으로 실행될 수 있도록 설정할 수 있습니다.
이와 같은 내용을 포스트에 포함하여, PHP CLI 프로그램을 작성하는 방법을 자세히 설명할 수 있습니다.
'PHP' 카테고리의 다른 글
[PHP] 코드를 아름답게... (1) | 2025.05.15 |
---|---|
[PHP]PHP에서 Python 스크립트 실행 방법: PHP와 Python의 연동 (0) | 2025.02.26 |
[PHP] PHP에서 암호화와 복호화 하는 방법 (1) | 2023.12.30 |