![为什么无法在 PHP-FPM 池或 php.ini 中禁用 ECHO(disable_functions)?](https://linux22.com/image/195569/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%97%A0%E6%B3%95%E5%9C%A8%20PHP-FPM%20%E6%B1%A0%E6%88%96%20php.ini%20%E4%B8%AD%E7%A6%81%E7%94%A8%20ECHO%EF%BC%88disable_functions%EF%BC%89%EF%BC%9F.png)
你会发现它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 手册的“字符串函数”部分中找到,甚至该页面的链接也如上所示“/manual/en/函数.echo.php”