"php -f"는 코드를 실행하지 않고 파일 내용만 표시합니다.

"php -f"는 코드를 실행하지 않고 파일 내용만 표시합니다.

Debian 9 및 PHP 7.3을 실행하고 명령으로 파일을 실행하려고 합니다 php -f hello.php. 에코하는 대신 hello소스 코드를 출력합니다. 전체 코드는 다음과 같습니다

#!/usr/bin/php
<?
echo 'hello';
?>

제가 한:

  • 파일에 읽기 및 실행 권한이 있는지 확인했습니다.
  • PHP를 확인했습니다오두막라인이 맞습니다.
  • PHP CLI 도구가 설치되었는지 확인했습니다.

뭐가 잘못 되었 니? 어떻게 작동하게 만들까요?

답변1

PHP가 파일을 구문 분석할 때 열기 및 닫기 태그를 찾습니다. 이 태그는 <?phpPHP ?>에게 둘 사이의 코드 해석을 시작하고 중지하도록 지시합니다. 이러한 방식으로 구문 분석하면 PHP 구문 분석기가 여는 태그와 닫는 태그 쌍 외부의 모든 항목을 무시하므로 모든 종류의 다양한 문서에 PHP를 포함할 수 있습니다.

PHP는 또한 짧은 열기 태그를 허용합니다 ( 구성 파일 지시어를 사용하여 활성화하거나 PHP가 옵션으로 구성된 경우 <?에만 사용할 수 있으므로 권장되지 않습니다 ).short_open_tag php.ini--enable-short-tags

(원천)

따라서 가장 안정적인 솔루션은 코드에서 <?php대신 사용하는 것입니다.<?

답변2

그 "shebang"은 필요하지 않습니다.

#!/usr/bin/php

스크립트를 이렇게 만드세요. php여는 짧은 태그( <?) 에 를 추가해야 합니다 .

<?php
echo 'hello';
?>

그런 다음 다음과 같이 실행하십시오.

php -f hello.php

아니면 그냥 생략하고 다음 -f과 같이 실행해도 됩니다.

php ./hello.php

그러면 출력은 다음과 같습니다.

hello

게다가 이렇게 말할 때:

  • 파일에 읽기 및 실행 권한이 있는지 확인했습니다.

PHP 파일에는 실행 권한이 필요하지 않습니다. PHP 인터프리터가 파일을 읽고 구문 분석하므로 읽기 권한만 부여됩니다. Apache 모듈 PHP 인터프리터뿐만 아니라 명령줄에서도 동일합니다.

관련 정보