Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gremio10

[Resolvido] Acessar site online

Recommended Posts

Fala galera, eu to com um problemão, fui colocar meu site em Zend no ar, e quando tentei acessar pela URL, ele fica na raiz do site, ou seja, nas pastas da aplicação, ai entro no public/ e ele me retorna um erro :

 

The requested URL /public/login/index was not found on this server.

 

e meu arquivo .htaccess

 

# Turn on rewrites.
RewriteEngine on

# Only apply to URLs on this domain
RewriteCond %{HTTP_HOST} ^(www.)?meusite.com.br$

# Only apply to URLs that aren't already under folder.
RewriteCond %{REQUEST_URI} !^/public/

# Don't apply to URLs that go to existing files or folders.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all those to insert /public.
RewriteRule ^(.*)$ /public/$1

# Also redirect the root folder.
RewriteCond %{HTTP_HOST} ^(www.)?meusite.com.br$
RewriteRule ^(/)?$ public/index.php [L]

 

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está a estrutura de pastas no servidor? Qual a pasta onde está definido o DOCUMENT_ROOT? Normalmente os servidores colocam em uma pasta chamada public_html ou www ou ainda public. Se tiver alguma destas pastas, coloque tudo que está dentro da pasta public no seu projeto (index.php, .htaccess, estilos, imagens e javascript) dentro desta pasta e tente acessar a página inicial do projeto.

 

Caso ele acesse e faça um redirecionamento (como parece ser o caso), tente fazer adicionar o index.php antes da URL (trocando www.meusite.com.br/login/index por www.meusite.com.br/index.php/login/index). Se funcionar com o index.php, o problema está no mod_rewrite.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Matias Rezende, bom, coloquei um index.php na raiz com o $_SERVER, e me retornou que no DOCUMENT_ROOT é /var/www

 

dentro do www/ há

 

  • application
  • docs
  • library
  • public
  • tests

 

e nesse meu index.php eu coloquei um header( "Location: public/index.php" );

 

quando atualizei, ele foi, e a url ficou:

 

meusite.com.br/public/index.php/login/index

 

e retornou o erro:

 

Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'DocType' was not found in the registry;

 

então fui na minha layout e tirei o

 

<?php echo $this->DocType('XHTML1_STRICT')."\n";?>

 

e foi, mas queria ver se tem como não aparecer o public, pois local ele funciona perfeitamente...

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo... A estrutura tá errada...

 

As pastas application, docs, library e tests devem ficam antes da pasta www. O conteúdo da pasta public deve ficar dentro da pasta www.

 

Assim deve funcionar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu .htaccess não vai funcionar... Modifique ele para o seguinte:

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

 

Deixando este .htaccess dentro da pasta www.

 

Se os arquivos vão ser localizados, vai depender do conteúdo do arquivo index.php. O PHP pode buscar arquivos fora do document_root, ou seja, voltando 1 pasta (ou mais se necessário).

 

Tente desta forma. Se não funcionar, poste o conteúdo do arquivo index.php e, se possível, a URL utilizada para acessar o sistema.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

public/.htacces

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

 

public/index.php

 

<?php

// Define path to application directory
defined('APPLICATION_PATH')
   || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
   || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
   realpath(APPLICATION_PATH . '/../library'),
   get_include_path(),
)));

function printr( $_params )
{
   echo "<pre>";
       print_r( $_params );
   echo "</pre>";
}

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
   APPLICATION_ENV,
   APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
           ->run();

 

não modifiquei nada tanto no index quanto no htaccess...

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E não funcionou? Com estes conteúdos, a estrutura deve ficar assim:

 

/application
   /{todo o conteúdo da aplicação, como controllers, models e views}
/library
/www
   /imagens
   /estilos
   /script
   index.php
   .htaccess

 

Estando os arquivos desta forma, você deve conseguir acessar o módulo default (caso tenha módulos), controller index e action index ao entrar na URL www.meusite.com.br. Se tiver outro problema, não é caso de estrutura de dados, e sim de alguma inconsistência na aplicação.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matias, coloquei como você disse no último post, mas ai ele direciona para o /login, e ai ele da o The requested URL /login was not found on this server.

 

/var
  /application
    /{todo o conteúdo da aplicação, como controllers, models e views}
  /library
  /www
    /imagens
    /estilos
    /script
    index.php
    .htaccess

 

módulo default (caso tenha módulos)

 

como descubro se tenho ?

 

ApplicationController.php controller que inicia com todas as outras,

a função isLogged() vai em todas as init() que precisam estar logado.

 

<?php

class ApplicationController extends Zend_Controller_Action 
{    
   /**
    * Verificar se o usuário está logado
    */
   protected function isLogged()
   {
       if( !Zend_Auth::getInstance()->hasIdentity() )  
       {  
           $this->_redirect( "login" );
		exit;
       }
   }

   /**
    * Verifica se a requisição é POST
    * 
    * @return bool
    */
   public function isPost()
   {
       return $this->_request->isPost();
   }

   /**
    * Verifica se a requisição é GET
    * 
    * @return bool
    */
   public function isGet()
   {
       return $this->_request->isGet();
   }

   /**
    * Retorna os valores vindos do POST
    * 
    * @return array
    */
   public function getPost()
   {
       return $this->_request->getPost();
   }

   /**
    * Retorna os valores vindos do GET
    * 
    * @return array
    */
   public function getQuery()
   {
       return $this->_request->getQuery();
   }

   /**
    * Desativa o layout
    */
   public function disableLayout()
   {
       $this->_helper->layout->disableLayout();
   }

   /**
    * Retorna para uma página da mesma controller
    * 
    * @param string $_view 
    */
   public function redirector( $_view )
   {
       $this->_helper->redirector( $_view );
   }

   /**
    * Muda o layout da página
    * 
    * @param string $_layout
    */
   public function setLayout( $_layout )
   {
       $this->_helper->_layout->setLayout( $_layout );
   }
}

?>

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o problema está no mod_rewrite mesmo.

 

Neste página que não encontra, adicione o index.php antes de /login, ficando www.meusite.com.br/index.php/login. Se aparecer a página normalmente como você espera, o problema é o mod_rewrite mesmo, que deve estar desabilitado no servidor (ou então não ser servidor Apache).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é DocType, é doctype. Troque por:

 

<?php echo $this->doctype('XHTML1_STRICT')."\n";?>

 

Deve funcionar. Pelo jeito você programou ele no Windows e está instalando em ambiente Linux. Sinto lhe dizer, mas é grande a possibilidade de você encontrar mais problemas, principalmente por conta disto (Windows é case insensitive, enquanto o Linux é case sensitive). Se tiver mais algum problema neste nível (plugin ou classe não encontrada), pode conferir que é problema de case.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe estar voltando com esse tópico, é que me deu um problema, e como é referente a esse assunto, acho melhor não abrir um novo tópico.

 

Eu uso para upload de foto o Zend_File_Transfer_Adapter_Abstract, para a pasta upload/ que fica no public, mas agora ele não encontra o public mesmo dentro do www/

 

coloquei ele então fora, no /var/upload/ e nada..

 

o que pode ser ?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você tenta enviar para a pasta no código? Se os arquivos ali baixados serão necessários para exibição eles devem ficar dentro da pasta www.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

/**
            * Determina para qual pasta vai o upload
            */
           $_path = "upload/";

$_upload = new Zend_File_Transfer();            
                   $_upload->setDestination( $_path );            
                   $_upload->addValidator( "Extension", false, array( "jpg", "jpeg", "png", "case" => true ) )
                           //->addValidator( "FilesSize", false, array( "min" => "1bit", "max" => "2Mb" ) )
                           ->addValidator( "Count", false, 1 )
                           ->addValidator( "ExcludeExtension", false, array( "php", "exe", "asp", "case" => true ) )
                           //->addValidator( "ImageSize", false, array( "maxwidth" => 150, "maxheight" => 150 ) )
                           ;

                   $_file = $_upload->getFileInfo();

                   /**
                    * Pega a extensão do arquivo
                    */
                   $_fileExtension = $this->getExtension( $_upload->getFileName( null, false ) );

                   /**
                    * Retorna um novo nome para o arquivo
                    */
                   $_prefix = $this->getRenameFile( $_fileExtension );

                   /**
                    * Renomeia o arquivo e irá sobreescrever caso exista outro igual
                    */
                   $_upload->addFilter( "Rename", array( "target" => $_path . $_prefix, "overwrite" => true ) );

if( $_upload->receive() )
                       {
                           try
                           {
                               $image = Zend_WideImage_WideImage::loadFromFile( $_path . $_prefix );

                               /**
                                * Nome para o arquivo
                                * será salvo no banco de dados
                                * terá seus prefixos:
                                * small_,
                                * medium_,
                                * big_
                                */
                               $nameFile = date( "YmdHisu" ) . uniqid() . "." . $_fileExtension;            

                               /**
                                * Insere no banco de dados o nome do arquivo
                                * e também o id de qual profissional ele é
                                */
                               $upload = new Application_Model_Upload();
                               $file_upload_id = $upload->insert( array( "name" => $nameFile ) );

                               $_field[ "file_upload_id" ] = $file_upload_id;

                               $big_resized = $image->resize( 350, 350, "inside" );
                               $medium_resized = $image->resize( 163, 163, "inside" );
                               $small_resized = $image->resize( 44, 44, "fill" );
                               //$small_resized = $image->crop( '50%-100', '50%-125', 44, 44 );

                               $big_resized->saveToFile( $_path . "big_" . $nameFile );
                               $medium_resized->saveToFile( $_path . "medium_" . $nameFile );
                               $small_resized->saveToFile( $_path . "small_" . $nameFile );

                               setcookie( "perfilPhoto", $nameFile, time() + 3600 * 60 * 60 * 24, "/" );

                               unlink( $_path . $_prefix );


                           }
                           catch( Zend_Db_Exception $e )
                           {
                               print $e->getTraceAsString();
                           }
                       }

 

Faço assim...

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. Crie a pasta upload dentro da pasta www. Depois disto, adicione o código abaixo para debugar:

 

$_path = "upload/";
if(!is_dir($_path)) {
  echo "Ops... não achamos o diretório";
} elseif(!is_writable($_path)){
  echo "Ops... o diretório foi encontrado, mas não temos permissão de escrita nele";   
} else {
  echo "Hum.... achamos o diretório e temos permissão de escrita. O problema está em outro lugar.";
}
$_upload = new Zend_File_Transfer(); 

 

Veja qual das mensagens aparece.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.