!["php -f"는 코드를 실행하지 않고 파일 내용만 표시합니다.](https://rvso.com/image/1592548/%22php%20-f%22%EB%8A%94%20%EC%BD%94%EB%93%9C%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%9A%A9%EB%A7%8C%20%ED%91%9C%EC%8B%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
Debian 9 및 PHP 7.3을 실행하고 명령으로 파일을 실행하려고 합니다 php -f hello.php
. 에코하는 대신 hello
소스 코드를 출력합니다. 전체 코드는 다음과 같습니다
#!/usr/bin/php
<?
echo 'hello';
?>
제가 한:
- 파일에 읽기 및 실행 권한이 있는지 확인했습니다.
- PHP를 확인했습니다오두막라인이 맞습니다.
- PHP CLI 도구가 설치되었는지 확인했습니다.
뭐가 잘못 되었 니? 어떻게 작동하게 만들까요?
답변1
PHP가 파일을 구문 분석할 때 열기 및 닫기 태그를 찾습니다. 이 태그는
<?php
PHP?>
에게 둘 사이의 코드 해석을 시작하고 중지하도록 지시합니다. 이러한 방식으로 구문 분석하면 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 인터프리터뿐만 아니라 명령줄에서도 동일합니다.