菜鸟提问:如何出去页面上的warning信息?

aurorean 2005-09-07 03:53:59
各位大侠好,

我用Typo3开发一个内容管理的网站,typo3的引擎是用php写的,运行在apache/php/mysql上。最近我用一个发邮件的扩展,这个扩展有些bug,我一个其作者发出了bug报告,他也承认是一个bug,但要一段时间才能修改完。我着急要去除php在页面上的warning信息:
Warning: Wrong parameter count for array_keys() in /home/cms/www/rauch-frei/pub/typo3conf/ext/pil_mailform/pi1/class.tx_pilmailform_pi1.php on line 242
Warning: Wrong parameter count for array_keys() in /home/cms/www/rauch-frei/pub/typo3conf/ext/pil_mailform/pi1/class.tx_pilmailform_pi1.php on line 242


先做了如下尝试,
把output_buffering的值改为 On
;output_buffering = Off
output_buffering = On
把error_reporting 的值也该了:
;error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ERROR

但是好像没有效果,请问各位大侠,该如何去掉这两天warning信息?

多谢了!

aurorean
...全文
858 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aurorean 2005-09-07
  • 打赏
  • 举报
回复
"不要array_keys后面的true看看"

果然是高手呀。去掉true这个参数后就ok了。

非常感谢!
uuq 2005-09-07
  • 打赏
  • 举报
回复
不要array_keys后面的true看看
aurorean 2005-09-07
  • 打赏
  • 举报
回复
php.ini 中的确实配置就是这个呀:error_reporting = E_ALL & ~E_NOTICE

邮件能正常发出。error_reporting(0); 可以去除warning了。


代码如下, 写邮件的表单有两个字段,一个是发件人的邮件地址,一个是message:

print_r($fields);
//输出:Array ( [0] => email [1] => message )

for ($i = 0; $i < count($fields); $i++) {
// If the field value contains spaces, replace with an underscore
$fields[$i] = str_replace(' ', '_', $fields[$i]);

// Multiple choise fields
if (is_array($this->piVars[$types[$i]][$fields[$i]])) {
..... //此处代码省略.
} else {
if (isset($this->piVars[$types[$i]][$fields[$i]])) {
print_r(array_keys($this->piVars[$types[$i]]));
// $i = 0 时,输出:Array ( [0] => email )
// $i = 1 时,输出:Array ( [0] => message )
print_r($this->piVars[$types[$i]]);
// $i = 0 时,输出:Array ( [email] => sxxg_wacan@yahoo.com )
// $i = 1 时,输出:Array ( [message] => aaaaaaa )
print_r($this->piVars[$types[$i]][$fields[$i]]);
// $i = 0 时,输出:sxxg_wacan@yahoo.com
// $i = 1 时,输出:aaaaaaa

$key = array_keys($this->piVars[$types[$i]], $this->piVars[$types[$i]][$fields[$i]], true);
$this->piVars[$types[$i]][$fields[$i]] = trim($this->piVars[$types[$i]][$fields[$i]]);

switch ($types[$i]) {
case 'text':
case 'textarea':
$markers['###' . strtoupper($fields[$i]) . '_VAL###'] = !empty($this->piVars[$types[$i]][$fields[$i]]) ? $this->piVars[$types[$i]][$fields[$i]] : '';
break;
case 'radio':
case 'checkbox':
$markers['###' . strtoupper($key[0]) . '_' . strtoupper($this->piVars[$types[$i]][$fields[$i]]) . '_VAL###'] = 'checked="checked"';
break;
case 'select':
$markers['###' . strtoupper($key[0]) . '_' . strtoupper($this->piVars[$types[$i]][$fields[$i]]) . '_VAL###'] = 'selected="selected"';
break;
default:
break;
}
}
}
}

循环每次运行这一行
$key = array_keys($this->piVars[$types[$i]], $this->piVars[$types[$i]][$fields[$i]], true);
页面上就显示这个错误信息:
Warning: Wrong parameter count for array_keys() in /home/cms/www/rauch-frei/pub/typo3conf/ext/pil_mailform/pi1/class.tx_pilmailform_pi1.php on line 238


PHP 很灵活,我是第一次接触,基本上什么都不会。

谢谢了大侠们帮我分析。
xuzuning 2005-09-07
  • 打赏
  • 举报
回复
242行的array_keys函数缺少参数
你最好贴出242行上下各5行的代码

你可以在该程序开始处加入
error_reporting(0);
来屏蔽错误显示
很怀疑你的程序能正常运行!
johnpanq 2005-09-07
  • 打赏
  • 举报
回复
错了,应该是
error_reporting = E_ALL & ~E_NOTICE
或者干脆关闭错误
display_errors = Off
johnpanq 2005-09-07
  • 打赏
  • 举报
回复
error_reporting = E_ALL & ~E_WARNNING

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧