index.php не завантажується за замовчуванням


107

Щойно я встановив CentOS, Apache та PHP. Коли я відвідую свій веб-сайт http://example.com/myapp/ , він говорить "заборонено". За замовчуванням він не завантажує файл index.php.

Коли я відвідую http://example.com/myapp/index.php , він працює чудово.

Будь-яка ідея, як виправити це питання?

Відповіді:


153

Apache потрібно налаштувати, щоб розпізнати index.php як файл індексу.

Найпростіший спосіб досягти цього ..

  1. Створіть .htaccess файл у вашому веб-кореневі.

  2. Додати рядок ...

DirectoryIndex index.php

Ось ресурс з цього питання ...
http://www.twsc.biz/twsc_hosting_htaccess.php

Редагувати: я припускаю, що apache налаштований для дозволу файлів .htaccess. Якщо це не так, вам доведеться змінити налаштування у файлі конфігурації apache (httpd.conf)


4
Ймовірно, це повинно бути у файлі php.conf, який завантажує apache.
staticsan

Я думаю, ти маєш на увазі php.ini. Незважаючи на те, його apache не розпізнає index.php як файл індексу каталогу. Чи обробка файлів PHP - це ще одна проблема конфігурації apache.
Джон Гіммельман

1
не забудьте перезапустити апаш !! як я це зробив! : /
Navid Einackchi

102

Хоча додавання 'DirectoryIndex index.php' до файлу .htaccess може працювати,

ПРИМІТКА:

Взагалі, ви ніколи не повинні використовувати .htaccess файли

Це цитується з http://httpd.apache.org/docs/1.3/howto/htaccess.html
Хоча це стосується і більш старої версії apache, я вважаю, що принцип все ще діє.

Додавання наступного до вашого httpd.conf (якщо у вас є доступ до нього) вважається кращою формою, спричиняє менше накладних витрат на сервер та має такий же ефект:

<Directory /myapp>
DirectoryIndex index.php
</Directory>

4
все гаразд і денді, якщо у вас є доступ до цього файлу
Hayden Thring

1
+1 для цього. Це кращий метод, якщо у вас немає доступу до httpd.conf.
Меттью Джонсон

Я вважаю, що додавання цього до файлу конфігурації за замовчуванням також добре, якщо ви використовуєте HTTPS.
Alex W

44

Гадаю, я б сказав, що індекс каталогів встановлений на index.html, або якийсь варіант, спробуйте:

DirectoryIndex index.html index.php

Це все одно надасть index.html пріоритет над index.php (зручно, якщо вам потрібно перенести сторінку обслуговування)


Шахта виглядає так, але, на жаль, завантажує index.php замість виконання.
Webnet

@Webnet, то ви повинні розглянути можливість зміни типу та LoadModules на php, щоб він прочитав php [ stackoverflow.com/questions/5121495/…
Merey Nurlan

15

Це може бути корисним комусь. ось фрагмент від httpd.conf (вікна версії 2.2 Apache)

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

тепер це буде шукати файл index.html, якщо його не знайти, він шукатиме index.php.


3

Спробуйте створити .htaccess файл із наступним

DirectoryIndex index.php

Редагувати: Насправді, чи не існує пакету 'php-apache' чи чогось, що ви повинні встановити разом з ними?


3

У мене була така ж проблема з сайтом на нашому веб-сайті, що розміщувався безпосередньо у адміністратора. я додав

DirectoryIndex index.php

як спеціальне розширення https (яке додає код до httpdфайлу сайтів ), а потім сайт працює index.phpза замовчуванням.


2

Те саме питання для мене. Моє рішення полягало в тому, що mod_dir не було ввімкнено і apache2 не видав помилку під час читання директиви у моєму файлі VirtualHost:

DirectoryIndex index.html

Використання команд:

sudo a2enmod dir
sudo sudo service apache2 restart

Виправлена ​​проблема.


1
Я думаю, ти маєш на увазі a2enmod?
TR_SLimey

1

Для отримання інформації: у деяких конфігураціях Apache2 ви повинні додати команду DirectoryIndex в mods_enabled / dir.conf (вона не розташована в apache2.conf)


1

Прочитавши все це і спробувавши виправити це, я отримав просте рішення на форумі ubuntu ( https://help.ubuntu.com/community/ApacheMySQLPHP ). Проблема полягає в модулі libapache2-mod-php5. Ось чому браузер завантажує файл index.php, а не показує веб-сторінку. Виконайте наступне. Якщо модуль повернення sudo a2enmod php5 не існує, проблема з libapache2-mod-php5. Чистка видаліть модуль за допомогою команди sudo apt-get --purge delete libapache2-mod-php5 Потім встановіть його знову sudo apt-get install libapache2-mod-php5


1

У мене був подібний симптом. У моєму випадку, але моє ідіотизм ненавмисно також мав порожній файл index.html у кореневій папці веб. Apache обслуговував це, а не index.php, коли я не запитував явно index.php, оскільки DirectoryIndexбув налаштований так mods-available/dir.conf:

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

Тобто 'index.html' з’являється попереду 'index.php' у списку пріоритетів. Видалення файла index.html з веб-кореня природно вирішило проблему. D'oh!


1

Покрокова та повна інструкція для Ubuntu 16.04.4 LTS та Apache / 2.4.18

" sudo -s"

" cd /etc/apache2/mods-enabled"

" vi dir.conf" і перемістіть index.php направо після DirectoryIndex, як показано нижче, і збережіть файл, а потім перезапустіть сервер apache.

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

"service apache2 restart"

Якщо ви не бачите dir.conf, тоді вам потрібно буде завантажити його (Google для того, як це зробити)

Зроблено.


1

Ця публікація може бути давньою, але я просто розміщую її у випадку, якщо вона допомагає іншій людині, я б не радив створювати .htaccess-файл у вашому веб-корені та змінювати індекс. Я вважаю, що краще виконувати кроки

  1. Перейдіть до папки conf у вашій папці apache

    C:\Apache24\conf

  2. Відкрийте файл з назвою

    httpd.conf

  3. Перейдіть до розділу

    <IfModule dir_module>
       DirectoryIndex index.html 
    
     </IfModule>
  4. Додайте до нього index.php, як показано нижче

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

Таким чином, він все ще вибирає index.html та index.php як індекс за замовчуванням, але надаючи пріоритет index.html, оскільки index.html був раніше * index.php. Під цим я маю на увазі, що у вас є і index.html, і index.php в одному каталозі, index.html буде використовуватися як індекс за замовчуванням, за винятком того, що ви пишете ** index.php * перед index.hml

Я сподіваюся, що це комусь допоможе ... Щасливе кодування


1

Цей працює як шарм!

Перший

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

то після цього від

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

до

 <Files ".ht*">
    Require all granted
</Files>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.