3

私は現在、ZendFramework2チュートリアルを回避しようとしています。

SolarisシステムでZendEnginev2.4.0でApache2とphp5.4.7を使用しています。

必要なものをすべて作成できましたが、リストからアルバムを追加または削除したい場合、Apacheの子プロセスが常にクラッシュし、セグメンテーション違反が発生します。これをgdbhttpdでバックトレースし、エラーが発生するまで-Xを実行します。最後に何かが実行されたフレームが、ZendのStringLength.php:169の関数isValid()を取得しようとしていることがわかりました。

アルバムを追加または編集する場合、ユーザーはアーティストのデータとアルバム名を入力してから、送信ボタンを押す必要があります。フォームの入力を検証するとクラッシュします。

単一の文字名、名前を含むüöä、および「猫のシモン」のような単純な名前を追加しようとしましたが、すべて失敗します。

問題が何であるかについて何か提案がありますか?

編集:

エラーをもう少しローカライズしました。

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()メソッドに関連していますか?

EDIT2:

問題はiconv_strlenに関連していますが、理由はわかりません:/通常のstrlen()を使用するだけで問題なく動作します

4

1 に答える 1

0

あなたが何をしようとしているのか正確にはわかりません。

Zend\Validator\StringLength? という検証クラスを使用しているようです。それとも私が間違っていますか?

バリデーターに初期データを提供できますか?

于 2013-05-09T17:15:28.857 に答える