You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2实例中Android Studio访问/var/www/android_connect报404错误求助

解决AWS EC2上Apache无法访问子目录PHP文件的404问题

你这情况踩了几个Apache配置和路径理解的常见坑,我一步步帮你排查解决:

1. 先纠正最基础的URL访问错误

你在浏览器里输入的/var/www/android_connect/login_status.php是服务器本地的文件路径,不是网页访问的URL!正确的访问方式应该用你的EC2实例公网IP(或绑定的域名)加上相对路径,比如:
http://你的EC2公网IP/android_connect/login_status.php
如果还是404,继续往下排查。

2. 让Apache能找到你的文件目录

Apache默认的**DocumentRoot(网站根目录)**是/var/www/html,它只会从这个目录下加载网页文件。你把android_connect放在了/var/www下面,不在默认根目录范围内,所以Apache找不到它。有两种解决思路:

方法A:直接移动目录到默认根目录(最简单)

把整个android_connect目录移到/var/www/html下:

sudo mv /var/www/android_connect /var/www/html/

之后再用http://你的EC2公网IP/android_connect/login_status.php访问,应该就能定位到文件了。

方法B:修改Apache配置,指定新路径(适合不想移动文件的场景)

如果你不想动文件位置,可以修改Apache的主配置文件:

  • 对于Amazon Linux/RHEL系统,配置文件是/etc/httpd/conf/httpd.conf
  • 对于Ubuntu/Debian系统,配置文件是/etc/apache2/apache2.conf

选项1:修改全局根目录

找到配置里的DocumentRoot "/var/www/html"和<Directory "/var/www/html">两行,把路径改成/var/www:

DocumentRoot "/var/www"
<Directory "/var/www">
    AllowOverride All
    Require all granted
</Directory>

选项2:添加别名(不影响原有网站,更灵活)

在配置文件末尾添加一段规则,给android_connect目录设置一个访问别名:

Alias /android_connect /var/www/android_connect
<Directory "/var/www/android_connect">
    AllowOverride All
    Require all granted
</Directory>

修改完配置后,一定要重启Apache服务让配置生效:

  • Amazon Linux:sudo systemctl restart httpd
  • Ubuntu:sudo systemctl restart apache2
    重启前可以先检查配置是否有语法错误:sudo apachectl configtest

3. 修复文件和目录的权限

Apache运行时使用的用户通常是apache(Amazon Linux)或www-data(Ubuntu),必须确保这个用户能读取你的PHP文件和目录。执行以下命令:

# 更改目录和文件的所有者为Apache运行用户
sudo chown -R apache:apache /var/www/android_connect  # 适用于Amazon Linux
# Ubuntu系统请用这条:sudo chown -R www-data:www-data /var/www/android_connect

# 设置安全的权限(目录755允许访问,文件644允许读取)
sudo chmod -R 755 /var/www/android_connect
sudo find /var/www/android_connect -type f -exec chmod 644 {} \;

4. 处理SELinux限制(关键!容易被忽略)

AWS EC2的Amazon Linux默认启用了SELinux,就算文件权限正确,SELinux也可能阻止Apache访问非默认目录的内容。执行以下命令设置正确的SELinux上下文:

# 为目录添加Apache可访问的SELinux标签
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/android_connect(/.*)?"
# 把标签应用到目录及所有子文件
sudo restorecon -Rv /var/www/android_connect

做完以上步骤后,再尝试访问你的PHP文件,应该就能正常加载了。如果还是有问题,可以查看Apache的错误日志排查具体原因:

  • Amazon Linux:/var/log/httpd/error_log
  • Ubuntu:/var/log/apache2/error.log

内容的提问来源于stack exchange,提问作者avadhoot kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:05:33