Ir para conteúdo

POWERED BY:

Arquivado

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

Gabriel Gama

Problema com Controllers

Recommended Posts

Olá pessoal, tudo bem?

 

Então, estou iniciando o desenvolvimento com zend, ja li alguns tutoriais, deu pra entender bem seu funcionamento, mas estou com um problema e não consigo resolver, eu crio um projeto pela zf_tools, crio o link simbólico da biblioteca na pasta library, testo o projeto e aparece a tela de boas vindas do framework, até ai tudo bem, então logo depois no zf_tools dou o comando "zf create controller teste" e ele me cria o arquivo de controller teste, a pasta da view do controller tudo certo, mas na hora de acessar este novo controller não consigo, tentei baixar outros projetos também não acessa, me ocorre o seguinte erro:

 

Not Found

 

The requested URL /crud/public/users was not found on this server.

 

Apache/2.2.17 (Ubuntu) Server at localhost Port 80

 

não sei se pode ser algo no apache...

Agradeço a ajuda desde já.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gabriel, seja bem vindo ao fórum! :)

 

Este erro de página não encontrada foi gerado pelo Apache, e não pelo ZF.

 

Sendo assim, o seu arquivo index.php não está sendo chamado, o que indica algum problema na reescrita da URL.

 

Dê uma olhada no seu .htaccess, se ele existe e está OK.

 

Você também pode tentar acessar colocando o index.php no URL, assim:

 

http://localhost/crud/public/index.php/users

 

 

Sugiro que você configure um virtual host para cada projeto, pra não precisar ficar colocando esse "public" no URL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja também se o mod_rewrite do Apache está habilitado.

 

Carlos Eduardo

 

Verifiquei e esta habilitado sim,

 

gabriel@gabriel-Vostro-3500:~$ sudo a2enmod rewrite
Module rewrite already enabled

 

É esta funcionando porém estou tendo que colocar o index.php no meio da url, ficando assim: "http://localhost/crud/public/index.php/users"

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom na realidade isso acabou se tornando um problema para mim... Pelo fato que estou criando uma aplicação, e no layout faço referência para o css, se no meu virtualhost eu coloco "chamados/public/index.php" na hora de ler o css da erro, fui obrigado a tirar o index.php e agora para acessar outros controllers ou modules da aquele mesmo problema, não faço ideia de como arrumar isto...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não criou um virtualhost, caso contrário não precisaria estar usando este "public" no URL.

 

Como você usa Linux, não sei se vou conseguir te ajudar, mas vou tentar.

 

Acesse o diretório onde o Apache está instalado e procure por uma pasta com o nome conf e dentro dela outra pasta com o nome extra.

 

Se encontrar, veja se dentro dela tem um arquivo chamado httpd-vhosts.conf, se tiver abra ele e procure por essa linha:

 

NameVirtualHost *:80

 

Se ela estiver comentada (com o sinal de cerquilha no começo) remova a cerquilha, se não deixe como está.

 

No final do arquivo acrescente este código:

 

<VirtualHost *:80>
ServerName minhaapp.local
ServerAlias www.minhaapp.local
DocumentRoot "F:/xampp/htdocs/minhaapp/public"
SetEnv APPLICATION_ENV "development"
<Directory "F:/xampp/htdocs/minhaapp/public">
	DirectoryIndex index.php
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>
</VirtualHost>

 

Substitua o nome "minhaapp" pelo nome da sua aplicação, como você deseja acessar o URL. No caso ficaria assim: www.minhaapp.local.

 

Mude o caminho também para o caminho completo da sua aplicação até a pasta "public", no meu exemplo está "F:/xampp/htdocs/minhaapp/public", no Linux geralmente é "/home/minhaapp/public".

 

Agora acesse o arquivo de hosts do seu Linux (não sei se é igual ao Windows) e acrescente esta linha:

 

127.0.0.1   	minhaapp.local www.minhaapp.local

 

Depois disso reinicie o Apache e veja se consegue acessar a aplicação usando:

 

http://www.minhaapp.local

 

Algumas configurações devem ser diferentes no Linux, então imagino que você vá ter que dar uma pesquisada melhor, mas basicamente é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não criou um virtualhost, caso contrário não precisaria estar usando este "public" no URL.

 

Como você usa Linux, não sei se vou conseguir te ajudar, mas vou tentar.

 

Acesse o diretório onde o Apache está instalado e procure por uma pasta com o nome conf e dentro dela outra pasta com o nome extra.

 

Se encontrar, veja se dentro dela tem um arquivo chamado httpd-vhosts.conf, se tiver abra ele e procure por essa linha:

 

NameVirtualHost *:80

 

Se ela estiver comentada (com o sinal de cerquilha no começo) remova a cerquilha, se não deixe como está.

 

No final do arquivo acrescente este código:

 

<VirtualHost *:80>
ServerName minhaapp.local
ServerAlias www.minhaapp.local
DocumentRoot "F:/xampp/htdocs/minhaapp/public"
SetEnv APPLICATION_ENV "development"
<Directory "F:/xampp/htdocs/minhaapp/public">
	DirectoryIndex index.php
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>
</VirtualHost>

 

Substitua o nome "minhaapp" pelo nome da sua aplicação, como você deseja acessar o URL. No caso ficaria assim: www.minhaapp.local.

 

Mude o caminho também para o caminho completo da sua aplicação até a pasta "public", no meu exemplo está "F:/xampp/htdocs/minhaapp/public", no Linux geralmente é "/home/minhaapp/public".

 

Agora acesse o arquivo de hosts do seu Linux (não sei se é igual ao Windows) e acrescente esta linha:

 

127.0.0.1   	minhaapp.local www.minhaapp.local

 

Depois disso reinicie o Apache e veja se consegue acessar a aplicação usando:

 

http://www.minhaapp.local

 

Algumas configurações devem ser diferentes no Linux, então imagino que você vá ter que dar uma pesquisada melhor, mas basicamente é isso.

 

 

Não leo, ali eu escrevi o public porque é o caminho que eu coloco no meu virtualhost, ou seja, se eu coloca no virtualhost "localhost/chamados/public/index.php" e acessar com meu vhost que é chamados.local eu consigo acesso aos meus controllers, agora se no direcionamento do vhosts eu colocar apenas "localhost/chamados/public/" acessando também pelo chamados.local, eu não consigo acesso aos controllers...

 

Entendeu? Me expressei errado ali, desculpe!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acessando com o index.php funciona? Se funciona com o index.php e sem ele não funciona (dá erro 404), o problema é o rewrite que não está acontecendo. Está usando .htaccess? Se sim, poste o conteúdo dele aqui.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acessando com o index.php funciona? Se funciona com o index.php e sem ele não funciona (dá erro 404), o problema é o rewrite que não está acontecendo. Está usando .htaccess? Se sim, poste o conteúdo dele aqui.

 

Carlos Eduardo

 

Sim estou usando, seu conteudo é:

 

SetEnv APPLICATION_ENV production

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

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.