PHP-FPM 풀 또는 php.ini에서 ECHO(disable_functions)를 비활성화할 수 없는 이유는 무엇입니까?

PHP-FPM 풀 또는 php.ini에서 ECHO(disable_functions)를 비활성화할 수 없는 이유는 무엇입니까?

echo비활성화할 수 없음 을 알 수 있습니다 . 서비스를 다시 시작하면 무시되고 오류가 발생하지 않습니다 php-fpm. 비활성화에 대한 실제 이유가 없을 수도 있지만 echo추가 지식은 언제나 환영합니다.

테스트 구성은 다음과 같습니다.

php_admin_value[disable_functions] = echo,exec,shell_exec,phpinfo

다른 기능으로는 풀을 올바르게 읽을 수 있도록 하는 "제어" 기능이 있습니다. echo무시되지만 다른 기능은 적절하게 비활성화되어 있음 을 알 수 있습니다 .

협회https://www.php.net/manual/en/ini.core.php설명하다

이 지시문을 사용하면 내부 기능만 비활성화할 수 있습니다. 사용자 정의 함수는 영향을 받지 않습니다.

그러면 왜 echo영향을 받지 않습니까? 내부 기능 아닌가요?

답변1

ECHO가 영향을 받지 않는 이유는 ECHO가 함수가 아니기 때문입니다.

다음에서 찾은 정보https://www.php.net/manual/en/function.echo.php

echo는 함수가 아니라 언어 구성입니다. 해당 인수는 echo 키워드 뒤에 오는 표현식 목록으로, 괄호로 구분되지 않고 쉼표로 구분됩니다. 일부 다른 언어 구성과 달리 echo에는 반환 값이 없으므로 표현식의 컨텍스트에서 사용할 수 없습니다.

역설적이게도 ECHO 정보는 PHP 매뉴얼의 "String Functions" 섹션에서 찾을 수 있으며 해당 페이지에 대한 링크도 위와 같이 "/manual/en/함수.에코.php”

관련 정보