Zend_validate isValid()get stuck fatalError 608行/library/Zend/Validate/Hostname.php超过30秒的最大执行时间

时间:2011-08-07 23:24:50

标签: zend-framework zend-form

Iam患有Zend_validate,当我写一个表单并尝试添加验证器时,唯一对我有用的是如果我提交没有值的表单,它将显示错误消息,但如果我提交了好的值,它将会卡住了一段时间,然后给出了致命的错误消息,在608行的/Applications/MAMP/htdocs/MyApplicationFolderName/library/Zend/Validate/Hostname.php中超出最大执行时间30秒
请帮助我的控制器操作代码

public function createAction()
  {
    // action body

    $roleService=new User_Service_RoleService($this->em);



    $userForm=new User_Form_UserForm($roleService->listAllRoleNames());
    $userForm->startForm();

    $userForm->setAction('create');
    $userForm->setMethod('post');



    if($this->getRequest()->isPost() )
    {
        if($userForm->isValid($this->getRequest()->getPost()))
        {
        $this->userAccountService->createUser($this->getRequest()->getParams());
        $this->_forward('confirm');
        }

    }





    $this->view->form=$userForm;



}

我的表单类代码是

class User_Form_UserForm extends Zend_Form {
//put your code here

private $roles;

public function __construct($options = null) {
    parent::__construct($options);


    $this->roles=$options;


}


public function startForm()
{

    $idForm=new Zend_Form_Element_Hidden('id');
    $this->addElement($idForm);

     ///////////          
    $userEmailForm=new Zend_Form_Element_Text('email');
    $userEmailForm->setRequired(TRUE);
    $userEmailForm->setLabel('Email');

    $emailValidator=new Zend_Validate_EmailAddress();

   // $emailValidator->setOptions(array('domain' => FALSE));


    $userEmailForm->addValidator($emailValidator,false);

    $userEmailForm->setAttrib('size', 25);

    $userEmailForm->setFilters(array(new Zend_Filter_StringToLower(),
                                     new Zend_Filter_StringTrim())

                               );

    $this->addElement($userEmailForm);



}



 }

这是我的形式的一小部分它是如此简单,但由于Doctrine2和名称空间而使用MAMP PHP 5.3.5无法工作

请帮助我们。

注意我也尝试了其他验证器,如字符串长度,并显示相同的错误。

2 个答案:

答案 0 :(得分:4)

  

“我实际上刚刚找到了这个问题的答案:

     

MAMP附带的PHP 5.3版本中有一个错误   iconv_strlen()导致“do {...} while(false);”在循环中   验证器无限运行。我只是将我的PHP版本改为5.2,as   无论如何它更接近生产,它的工作原理。如果你需要5.3,   但是,您必须在MAMP中升级PHP安装。一世   没试过,但强烈推荐以下链接:

     

http://www.davidgolding.net/cakephp/upgrading-php-in-mamp.html

     

希望一切都有所帮助。“

来源:http://forum.mamp.info/viewtopic.php?f=2&t=12189

答案 1 :(得分:0)

我通过不使用mamp来解决问题,并开始使用Zendserver CE免费版http://www.zend.com/en/products/server-ce/downloads ,并完成此链接中描述的步骤http://www.witheringtree.com/2011/07/installing-zend-server-ce-on-os-x-a-guide-for-the-terminal-timid/  我可以将zend服务器的根文档编辑为USERS / sites / 我运行Zendframework验证,它工作得很好,我喜欢mamp但我开发Zend并且zend使用iconv_strlen(),

解决这个问题的另一种方法是安装PHP,但我发现这不是一个简单的解决方案,或者你可以使用macports而我不想那样,因为我使用zendframework我需要与之相关的东西所以我用过zendServer是迄今为止最干净的解决方案。