我迷失在这个问题上。
我设置了一个 AWC EC2 RHEL 服务器,并安装了 php 和 apache。除了 index.php 文件不会执行之外,一切似乎都正常。如果我直接调用它们,所有其他 *.php 文件都可以工作。
index.php 包含:
<?php echo "test"; ?>
在 /etc/httpd/conf/httpd.conf
我有设置:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
虽然如果我删除 index.php 仍然不起作用。
我对 index.php
的权限为 -rw-r--r-- ec2-user ec2-user
我不确定还有什么其他信息在这里有用,因为除了 index.php 之外所有其他 php 文件都可以工作。 (例如:如果我调用 /index.php
什么都不输出,如果我将 index.php
移动到 index2.php
并调用 /index2.php
输出 test
)
关于为什么会发生这种情况有什么想法吗?
编辑
我现在意识到在调用 index.php 文件检查访问日志时出现 500 内部服务器错误。
"GET/index.php HTTP/1.1"500
也许这有助于指明正确的方向?我仍然不清楚如何解决这个问题。同样,将文件名更改为 index.php
以外的任何名称(例如:index2.php
)将正确执行文件。
此外,启用错误报告后我收到此错误:
PHP 警告:未知:无法打开流:第 0 行未知中的权限被拒绝
PHP fatal error :未知:无法在未知中打开所需的 '/var/www/html/index.php' (include_path='.:/usr/share/pear:/usr/share/php')在第 0 行
我曾尝试更改对各种变体的权限,包括 777、755、655、644、664 等...甚至尝试将所有者更改为 apache。没有运气。
最佳答案
尝试将 selinux 配置为 permissive 或 disabled 模式。
我遇到了同样的问题。我试图安装 moodle 但失败了。我在上面遇到了同样的错误。
我将 selinux 配置为 permissive,看看这是否是根本原因,我确实能够安装。
我的问题是我以普通用户的身份在他的主目录下打开了 moodle 存档 (moodle...tar.gz),并将其移动到 apache 的 DocumentRoot。这导致 selinux 内容字段出错。
我已启用 selinux 并直接在 DocumentRoot (/var/www/html) 下打开 tar.gz 存档。这为文件提供了正确的内容属性 (httpd_sys_content_t)。我能够在启用 selinux 的情况下运行 moodle。
莫什
关于php - 在 AWS EC2 Linux RHEL 上,所有 PHP 文件都在执行,index.php 除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313004/