Apache 2.4 on Ubuntu 14 refuses to load index.php even though PHP loads.

November 19, 2015 8.1k views
PHP Ubuntu Apache

My apache won’t load a index.php one one of my vhosts not even if I type in example.com/index.php. I have two and one works fine.

The second vhost is my issue.

Any help would be appreciated, idk what changed between apache and php version but I am missing something. Any help would be appreciated.

I am posting both vhosts below exact copies.

First one:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /var/www/domain1.com/htdocs
DirectoryIndex index.php
<Directory />
AllowOverride All
</Directory>
<Directory /var/www/domain1.com/htdocs>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>
ErrorLog /var/log/apache2/domain1.com-error.log
LogLevel error
CustomLog /var/log/apache2/domain1.com-access.log combined

<IfModule security2_module>
SecRuleEngine Off
</IfModule>

phpMyAdmin default Apache configuration

Alias /ms /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php

<IfModule mod_php5.c>
AddType application/x-httpd-php .php

phpflag magicquotesgpc Off
php
flag trackvars On
php
flag registerglobals Off
php
adminflag allowurlfopen Off
php
value includepath .
php
adminvalue uploadtmpdir /var/lib/phpmyadmin/tmp
php
adminvalue openbasedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/
</IfModule>

</Directory>

Authorize for setup

<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName “phpMyAdmin Setup”
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>

Disallow web access to directories that don’t need it

<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>

</VirtualHost>

Second one:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /var/www/domain2.com
<IfModule dir_module>
DirectoryIndex index.html
DirectoryIndex index.php
</IfModule>
<Directory />
AllowOverride All
</Directory>
<Directory /var/www/domain2.com>
Options Indexes FollowSymLinks MultiViews
DirectoryIndex index.php
AllowOverride all
Require all granted
</Directory>
ErrorLog /var/log/apache2/domain2.com-error.log
LogLevel debug
CustomLog /var/log/apache2/domain2.com-access.log combined
</VirtualHost>

1 Answer

@GrowShall

The primary difference between the two VirtualHost configurations is in your second one:

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

Your locking the DirectoryIndex definition inside an IfModule wrapper, whereas in the first VH, you’ve defined the DirectoryIndex just below your DocumentRoot definition.

If the dir_module is not enabled, then in the second VirtualHost, the DirectoryIndex will never be defined.

Ideally, if your website is powered by PHP, then define index.php first and index.html second and remove the IfModule wrapper.

Have another answer? Share your knowledge.