我目前正在尝试学习Zend Framework 2教程。
我在Solaris系统上使用的是Apache 2和php 5.4.7以及Zend Engine v2.4.0。
我设法创建了我需要的一切,但当我想从列表中添加或删除相册时,Apache子进程总是崩溃,导致分段错误。我追溯到gdb-httpd,运行-X直到出现错误为止,发现最后一次执行的帧试图获得Zend的StringLength.php的函数isValid():169
添加或编辑专辑时,用户必须提供艺术家的数据和专辑名称,然后点击提交按钮。它现在在验证表单的输入时崩溃了
我试着添加单个字符的名字,包含名字和简单的名字,比如"猫西蒙",一切都失败了。
你有什么建议可能是什么问题吗?
编辑:
我将错误进一步定位。
public function isValid($value)
{
if (!is_string($value)) {
$this->error(self::INVALID);
return false;
}
/*
$this->setValue($value);
if ($this->getEncoding() !== null) {
$length = iconv_strlen($value, $this->getEncoding());
} else {
$length = iconv_strlen($value);
}
if ($length < $this->getMin()) {
$this->error(self::TOO_SHORT);
}
*/
if (null !== $this->getMax() && $this->getMax() < $length) {
$this->error(self::TOO_LONG);
}
if (count($this->getMessages())) {
return false;
} else {
return true;
}
}
分段错误在isValid()中的注释之间引发问题。也许它与getEncoding()方法有关?
第2版:
问题与iconv_strlen有关,但不知道为什么:/如果你只使用普通的strlen(),效果很好
我不明白你到底想做什么。
您似乎在使用一些验证类:Zend\Validator\StringLength?还是我错了?
您能为验证器提供您的初始数据吗?