Busca

Acompanhe

RSS

Wiki Instalação #227

Contorno para PHP sem extensão de semáforo

João Borsoi, #227, abril 2010

Palavras-chave: instalação, php

A instalação do avalanche em ambiente com PHP sem extensão de semáforo, irá gerar um erro como abaixo:

Fatal error:  Call to undefined function sem_get() in /home/ADE/lib/avalanche-2.0.4-3/lib/AV_DBDriver.inc on line 116

Apesar de ser um requisito do avalanche, existe um contorno, não recomendado. Mas para usuários que saibam o que estão fazendo, pode ser útil principalmente quando deseja-se instalar o avalanche em ambiente onde não se pode alterar as configurações do PHP.

Até a atual versão do avalanche (2.0.6), os semáforos são usados somente em funcionalidades de criação e alteração dinâmica de tabelas do banco de dados, uma vez que estas não funcionam como transações (transactions).

Desta forma, se o aplicativo não faz uso desses recursos, é possível comentar as linhas que geram o erro, editando o arquivo avalanche/lib/UM_Users.inc, no método Login, conforme exemplo abaixo:

  function Login($login, $password)
  {
    $maintenance=$this->module->pageBuilder->siteConfig->getVar("flags",
                                "maintenance");
    if($maintenance)
      throw new AV_Exception(MAINTENANCE, $this->lang);

    // try
    // {
    //  $this->dbDriver->ResumeTransaction();
    // }
    // catch(Exception $e)
    // {
    // throw new AV_Exception(MAINTENANCE, $this->lang);
    // }

    $sessionH = &$this->module->pageBuilder->sessionH;
    if($sessionH->isMember())
      $sessionH->attemptLogout();
    $SQL = "SELECT userId, status FROM UM_User WHERE ";
    $SQL .= "login = '" . $login . "'";
    $user = $this->dbDriver->GetRow($SQL);
    if($user['status'] == 0)
      throw new AV_Exception(PERMISSION_DENIED, $this->lang);
   
    if(!$sessionH->attemptLogin($login,$password))
      throw new AV_Exception(PERMISSION_DENIED, $this->lang);
  }

 

Imprimir

Comentários

Adicionar Comentário