我在Joomla中收到此错误:
Illegal variable `_files` or `_env` or `_get` or `_post` or `_cookie`
or `_server` or `_session` or `globals` passed to script.
Run Code Online (Sandbox Code Playgroud)
我没有得到很多帮助谷歌搜索.
如果您尝试指定名称仅由数字组成的URL参数,您将看到此错误,例如
http://www.example.com/?1234567=test
Run Code Online (Sandbox Code Playgroud)
或者如果您尝试使用joomla-reserved变量,例如
http://www.example.com/?_files=test
Run Code Online (Sandbox Code Playgroud)
这不是一个很好的错误信息.如果您可以访问unix终端,则可以使用某些命令行工具调试这些问题,例如
$ find /var/www/html -exec grep -l 'Illegal variable' {} \;
/var/www/html/libraries/joomla/environment/request.php
Run Code Online (Sandbox Code Playgroud)
这是一个虚构的joomla安装,假设相当标准DocumentRoot.结果立即确认这是一个Joomla错误,并报告导致它的文件.从该文件中提取:
static $banned = array( '_files', '_env', '_get', '_post', '_cookie', '_server', '_session', 'globals' );
foreach ($array as $key => $value)
{
// PHP GLOBALS injection bug
$failed = in_array( strtolower( $key ), $banned );
// PHP Zend_Hash_Del_Key_Or_Index bug
$failed |= is_numeric( $key );
if ($failed) {
jexit( 'Illegal variable <b>' . implode( '</b> or <b>', $banned ) . '</b> passed to script.' );
}
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,错误消息特别具有误导性,因为不仅在保留变量名称的情况下抛出,而且如果参数名称是数字.