Search code examples
phplinuxamazon-web-servicesamazon-ec2rhel

On AWS EC2 Linux RHEL all PHP files are executing, except for index.php


I am lost on this one.

I have setup an AWC EC2 RHEL server, and installed php and apache. Everything seems to work except for the fact that the index.php file will not execute. All other *.php files will work if I call them directly.

index.php contains:

<?php echo "test"; ?>

in /etc/httpd/conf/httpd.conf I have the settings:

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

Although if I remove the index.php still does not work.

I have the permissions on index.php as -rw-r--r-- ec2-user ec2-user

I am not sure what other information would be useful here seeing as all other php files work except for the index.php. (eg: if I call /index.php outputs nothing, if I move index.php to index2.php and call /index2.php outpus test)

Any thoughts as to why this may be happening?

EDIT

I am now realizing there is a 500 internal server error when the index.php file is called checking the access logs.

"GET /index.php HTTP/1.1" 500

Maybe that will help point in the right direction? I am still unclear how to solve this issue. Again, changing the name of the file to anything other than index.php (eg: index2.php) will execute the file correctly.

Also, after enabling error reporting I am getting this error:

PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0

PHP Fatal error: Unknown: Failed opening required '/var/www/html/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0

I have tried changing permissions to all sorts of variants including 777, 755, 655, 644, 664, etc... even tried changing owner to apache. no luck.


Solution

  • Try to configure selinux in permissive or disabled mode.

    I had the same problem. I was trying to install moodle and failed. I got the same error above.

    I configured selinux to permissive to see if this is the root cause and indeed I was able to install.

    My problem was that I have opened moodle archive (moodle...tar.gz) as a regular user under his home directory and moved it to apache's DocumentRoot. This got the selinux content field to be wrong.

    I have enable selinux and opened the tar.gz archive directly under DocumentRoot (/var/www/html). This gave the right content attribute to the files (httpd_sys_content_t). I was able to run moodle with selinux enabled.

    Mosh