简体   繁体   中英

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.

AWS EC2 RedHat Web Server inner links are not working. Solution

# Possible values for the Options directive are "None", "All",
# or any combination of:
# Note that "MultiViews" must be named explicitly --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
AllowOverride none 

new value should change to AllowOverride all

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

Permissions needs to be set to read by Apache users. Current permissions doesn't allows it to read the file as Apache User.

Also it would be good to check what error you are getting in Apache Logs, it should be "403 Forbidden" if I am not wrong.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM