AWS EC2实例中Android Studio访问/var/www/android_connect报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

