index.php não carrega por padrão

Respostas:

153

O Apache precisa ser configurado para reconhecer index.php como um arquivo de índice.

A maneira mais simples de fazer isso ..

  1. Crie um arquivo .htaccess em sua raiz da web.

  2. Adicione a linha ...

DirectoryIndex index.php

Aqui está um recurso sobre o assunto ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Editar: estou assumindo que o apache está configurado para permitir arquivos .htaccess. Se não for, você terá que modificar a configuração no arquivo de configuração do apache (httpd.conf)

John Himmelman
fonte
4
Provavelmente deve estar no arquivo php.conf que o apache carrega.
staticsan
Eu acho que você quer dizer php.ini. Independentemente disso, seu apache não está reconhecendo index.php como um arquivo de índice de diretório. Se a manipulação de arquivos php é outro problema de configuração do apache.
John Himmelman
1
não se esqueça de reiniciar o apache !! como eu fiz! : /
Navid Einackchi
102

Embora a adição de 'DirectoryIndex index.php' a um arquivo .htaccess possa funcionar,

NOTA:

Em geral, você nunca deve usar arquivos .htaccess

Isso é citado em http://httpd.apache.org/docs/1.3/howto/htaccess.html
Embora se refira a uma versão mais antiga do apache, acredito que o princípio ainda se aplica.

Adicionar o seguinte ao seu httpd.conf (se você tiver acesso a ele) é considerado a melhor forma, causa menos sobrecarga no servidor e tem exatamente o mesmo efeito:

<Directory /myapp>
DirectoryIndex index.php
</Directory>
MILÍMETROS
fonte
4
tudo bem se você tiver acesso a esse arquivo
Hayden Thring,
1
1 para isso. É o método preferido, a menos que você não tenha acesso ao httpd.conf.
Matthew Johnson
Acredito que adicionar isso ao arquivo de configuração SSL padrão também é adequado, se você estiver usando HTTPS.
Alex W
44

Eu diria que o índice do diretório está definido como index.html, ou alguma variante, tente:

DirectoryIndex index.html index.php

Isso ainda dará a index.html prioridade sobre index.php (útil se você precisar abrir uma página de manutenção)

Ben Rowe
fonte
O meu se parece com isso, mas infelizmente está baixando o index.php em vez de executá-lo.
Webnet
@Webnet, então você deve considerar alterar Type e LoadModules para php para que leia php [ stackoverflow.com/questions/5121495/…
Merey Nurlan
15

Isso pode ser útil para alguém. aqui está o snippet de httpd.conf (Apache versão 2.2 windows)

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
    DirectoryIndex index.php
</IfModule>

agora ele irá procurar pelo arquivo index.html, se não for encontrado, irá procurar por index.php.

Maruf
fonte
3

Tente criar um arquivo .htaccess com o seguinte

DirectoryIndex index.php

Edit: Na verdade, não existe um pacote 'php-apache' ou algo que você deve instalar com os dois?

animuson
fonte
3

Eu tive o mesmo problema com um site em nosso site de administração direta hospedado. Eu adicionei

DirectoryIndex index.php

como uma extensão httpd customizada (que adiciona código a um httpdarquivo de sites ) e o site então executava o index.phppor padrão.

Phil Errington
fonte
2

O mesmo problema para mim. Minha solução foi que mod_dir não estava habilitado e apache2 não estava emitindo um erro ao ler a diretiva em meu arquivo VirtualHost:

DirectoryIndex index.html

Usando os comandos:

sudo a2enmod dir
sudo sudo service apache2 restart

Corrigido o problema.

Martlark
fonte
1
Eu acho que você quer dizer a2enmod?
TR_SLimey
1

Para informações: em algumas configurações do Apache2, você deve adicionar o comando DirectoryIndex em mods_enabled / dir.conf (não está localizado em apache2.conf)

Zitun
fonte
1

Depois de ler tudo isso e tentar consertar, eu consegui uma solução simples no fórum do Ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ). O problema está no módulo libapache2-mod-php5. É por isso que o navegador baixa o arquivo index.php em vez de mostrar a página da web. Faça o seguinte. Se o módulo de retorno sudo a2enmod php5 não existir, o problema é com libapache2-mod-php5. Limpe remova o módulo com o comando sudo apt-get --purge remove libapache2-mod-php5 Em seguida, instale-o novamente sudo apt-get install libapache2-mod-php5

Rupak Rokade
fonte
1

Eu tive um sintoma semelhante. No meu caso, porém, minha idiotice foi involuntariamente também ter um arquivo index.html vazio na pasta raiz da web. O Apache estava servindo isso em vez de index.php quando eu não solicitei explicitamente index.php, uma vez que DirectoryIndexfoi configurado da seguinte maneira em mods-available/dir.conf:

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Ou seja, 'index.html' aparece antes de 'index.php' na lista de prioridade. Remover o arquivo index.html da raiz da web naturalmente resolveu o problema. D'oh!

John Rix
fonte
1

Passo a passo e instruções completas para Ubuntu 16.04.4 LTS e Apache / 2.4.18

"sudo -s "

"cd /etc/apache2/mods-enabled "

" vi dir.conf" e mova index.php para logo após DirectoryIndex como abaixo e salve o arquivo e reinicie o servidor apache.

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

"service apache2 restart "

Se você não vir o dir.conf, será necessário carregá-lo (google para saber como)

Feito.

Estrume
fonte
1

Este post pode ser antigo, mas estou postando apenas para o caso de ajudar outra pessoa, não aconselho criar um arquivo .htaccess em sua raiz da web e alterar o índice. Eu sinto que é melhor seguir os passos

  1. Vá para a pasta conf da sua pasta apache, a minha é

    C:\Apache24\conf

  2. Abra o arquivo chamado

    httpd.conf

  3. Vá para a seção

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. Adicione index.php a ele como mostrado abaixo

     <IfModule dir_module>
      DirectoryIndex index.html index.php
    
    </IfModule>

Desta forma, ele ainda escolhe index.html e index.php como o índice padrão, mas dando prioridade a index.html porque index.html veio antes de * index.php. Com isso quero dizer que você tem index.html e index.php no mesmo diretório, o index.html será usado como o índice padrão, exceto se você escrever ** index.php * antes de index.hml

Espero que ajude alguém ... Happy Coding

Excelente Lawrence
fonte
1

Este funciona como um encanto!

Primeiro

<IfModule dir_module>
    DirectoryIndex index.html
     DirectoryIndex index.php
</IfModule>

então depois disso de

<Files ".ht*">
    Require all denied
</Files>

para

 <Files ".ht*">
    Require all granted
</Files>
MelPogz
fonte