PHP 파일을 실행하려면 그 폴더에서 터미널을 열고 php index.php를 입력합니다. PHP가 파일을 실행하고 출력을 터미널에 표시합니다. PHP 페이지를 브라우저에서 보려면 php -S localhost:8000으로 내장 서버를 시작하고 http://localhost:8000을 여세요.
php index.php
첫 index.php는 한 줄이어도 됩니다. Run을 누르세요. php index.php가 출력하는 것과 정확히 같습니다.
PHP 코드는 <?php 태그 뒤에 씁니다. 그 태그 앞에 있는 것은 일반 텍스트로 출력되며, 이것이 PHP가 코드와 HTML을 섞는 방식입니다.
명령줄에서 PHP 파일 실행
PHP CLI(명령줄 인터페이스)는 스크립트를 한 번 실행하고 종료합니다. PHP가 설치되어 있어야 하며, php -v가 오류를 출력하면 먼저 PHP 설치를 보세요.
cd ~/projects/hello
php index.php # run the file
php -l index.php # only check the syntax ("lint")
php index.php > out.txt # save the output to a file
php -l은 파일을 업로드하기 전에 유용합니다. 구문 오류를 줄 번호와 함께 알려 주거나 No syntax errors detected in index.php를 출력합니다.
$argv로 인자 전달
파일 이름 뒤의 단어들은 $argv로 들어옵니다. $argv[0]은 항상 스크립트 자신의 이름이고, $argc는 그 이름을 포함한 개수입니다. 여기서는 추가 인자 없이 실행되므로 이름만 있습니다.
내 컴퓨터에서 php index.php Ada 3을 실행하면 인사말이 세 번 출력됩니다. ?? 기본값 덕분에 인자가 없어도 스크립트가 동작합니다. --name=Ada 같은 이름 있는 옵션에는 getopt를 쓰세요.
<?php
// php index.php --name=Ada --verbose
$opts = getopt('', ['name:', 'verbose']);
echo "Hello, " . ($opts['name'] ?? 'world') . "\n";
if (isset($opts['verbose'])) {
echo "Verbose mode\n";
}
php -S로 브라우저에서 PHP 실행
PHP에는 개발용 웹 서버가 내장되어 있습니다. 파일이 있는 폴더에서 시작하세요.
php -S localhost:8000
[Sat Oct 3 07:21:34 2026] PHP 8.3.19 Development Server (http://localhost:8000) started
이제 http://localhost:8000/은 index.php를, http://localhost:8000/about.php는 about.php를 실행합니다. 페이지를 불러올 때마다 파일이 다시 실행되고, 쿼리 문자열은 $_GET에 들어갑니다. 아래 블록도 같은 방식으로 동작합니다. 실행한 뒤 링크를 클릭하면 $_GET['page']가 설정된 채로 스크립트가 다시 실행됩니다.
유용한 옵션:
php -S localhost:8000 -t public # serve the public/ folder as the web root
php -S 0.0.0.0:8000 # reachable from other devices on your network
php -S localhost:8000 router.php # send every request through router.php
내장 서버는 한 번에 요청 하나만 처리하며 개발 전용입니다. 운영 환경에서 PHP는 Nginx나 Apache 뒤에서, 보통 PHP-FPM을 통해 실행됩니다.
스크립트가 어떻게 시작되었는지 확인
PHP_SAPI는 어떤 "서버 API"가 스크립트를 실행하는지 알려 줍니다. 터미널에서는 cli, php -S에서는 cli-server, 실제 웹 서버 뒤에서는 fpm-fcgi나 apache2handler입니다. 터미널에서만 실행되어야 하는 스크립트는 이것부터 확인합니다.
php -r로 한 줄 실행
간단한 테스트에는 파일이 필요 없습니다. php -r은 전달한 코드를 <?php 태그 없이 실행합니다.
php -r 'echo date("Y-m-d"), PHP_EOL;'
php -r 'var_dump(0.1 + 0.2 == 0.3);'
Windows cmd에서는 코드를 큰따옴표로 감싸고 안쪽에는 작은따옴표를 쓰세요. 여러 줄이라면 php -a가 대화형 셸을 열어, Enter를 누를 때마다 각 문장을 실행합니다.
macOS와 Linux에서 스크립트를 실행 가능하게 만들기
<?php 앞에 shebang 줄을 추가하고 파일에 실행 권한을 줍니다. shebang 줄은 출력되지 않습니다.
#!/usr/bin/env php
<?php
echo "Backup started\n";
chmod +x backup.php
./backup.php
cron에서 PHP 스크립트를 실행하는 방식이 이것입니다: 0 3 * * * /usr/bin/php /home/me/backup.php.
스크립트의 종료 코드
명령줄 스크립트는 종료 코드로 성공이나 실패를 알리며, 셸 스크립트와 cron이 이를 확인할 수 있습니다. exit(0)은 성공이고, 다른 숫자는 모두 실패입니다.
<?php
$file = $argv[1] ?? '';
if (!is_file($file)) {
fwrite(STDERR, "File not found: $file\n");
exit(1);
}
echo "Processing $file\n";
exit(0);
흔한 실수: 잘못된 파일이나 폴더에서 실행
Could not open input file: index.php는 PHP가 터미널의 현재 위치에서 파일을 찾지 못했다는 뜻입니다. pwd(Windows에서는 cd)로 현재 폴더를 확인하고, 프로젝트로 cd하거나 전체 경로를 지정하세요: php ~/projects/hello/index.php. php -S에서 분명히 있는 페이지가 404라면 대개 다른 폴더에서 서버를 시작한 것입니다. Ctrl+C로 멈추고 올바른 위치에서 다시 시작하거나 -t로 폴더를 지정하세요. 파일은 실행되는데 빈 페이지만 나온다면 오류 보고를 켜서 무엇이 잘못되었는지 확인하세요.
자주 묻는 질문
PHP 파일을 브라우저에서 실행하려면 어떻게 하나요?
파일이 있는 폴더에서 php -S localhost:8000으로 내장 서버를 시작한 뒤 http://localhost:8000/yourfile.php를 여세요. 디스크에서 파일을 직접 열면 PHP 코드를 실행하는 것이 없으므로 동작하지 않습니다.
PHP 스크립트에 인자를 전달하려면 어떻게 하나요?
파일 이름 뒤에 적습니다: php report.php 2026 sales. 스크립트 안에서 $argv는 배열 ['report.php', '2026', 'sales']이고 $argc는 3입니다. 첫 번째 요소는 항상 스크립트 이름입니다.
파일 없이 PHP 한 줄만 실행하려면 어떻게 하나요?
php -r을 쓰고 <?php 태그는 빼세요: php -r 'echo strtoupper("hi"), PHP_EOL;'. 여러 줄이라면 php -a가 대화형 셸을 엽니다.
PHP가 명령줄에서 실행 중인지 웹 서버에서 실행 중인지 어떻게 알 수 있나요?
PHP_SAPI(또는 php_sapi_name())를 확인하세요. 터미널에서는 "cli", php -S에서는 "cli-server", 웹 서버 뒤에서는 "fpm-fcgi"나 "apache2handler" 같은 값입니다.