2011-10-27 43 views
1

我得到这个错误:WordPress的sprintf的PHP错误

Warning: sprintf() [function.sprintf]: Too few arguments in /home/xxxxxxxx/public_html/wp-content/plugins/surveys/wpframe.php on line 53

的代码读取...

if(!function_exists('t')) { 
/// Globalization function - Returns the transilated string 
function t($message) { 
    $args = func_get_args(); 
    return __(call_user_func_array('sprintf', $args), $GLOBALS['wpframe_plugin_name']); 
} 
} 

任何想法有什么不对?

+0

某些在'调查'插件中调用该函数的做法*不正确*。我发现WordPress的插件是多斑点的。我总是添加错误检查。通常,在生产中运行Wordpress时关闭错误。 – mqsoh

+0

我想知道更多关于“在生产中运行Wordpress时关闭错误”的业务。这很简单吗? – blackessej

+0

在php.ini中将display_errors = Off和error_reporting设置为我记不起来的东西。文件中的注释说明。还要确保wp-config.php具有WP_DEBUG = false。 – mqsoh

回答

0

sprintf需要至少2个参数:格式字符串以及要插入该格式字符串的值列表。 e.g

sprintf('This is a %d decimal and this is a %s string', 42, 'xxx'); 

2格式的字符,所以需要2个值来填充。对于格式字符串中的每个格式字符,你必须指定一个匹配值。

当您收到错误时,您的$args变量有什么变化?

+0

我已经更新了我的问题,以包含更多的围绕第53行的代码。我非常抱歉,但PHP不是我的强大套件,我不知道如何找到你问的问题... – blackessej

+0

还行。在call_user_func业务之前做一个'var_dump($ args)',它将以可读格式转储$ args的内容。 –

+0

有一位朋友和我一起去了解我们,并且我们解决了这个问题。感谢您指点我正确的方向。 – blackessej