我有一个 amazon ec2 linux 实例(ubuntu 18.04)。我在那里安装了可以访问的网站这里。
在网站上我有一个下载按钮,它会触发一个 PHP,在/var/www/wondermap/html/tmp/
文件夹中生成一些文件并将它们压缩发送到客户端(客户端又使用 JavaScript 保存所有内容)。
该代码在我的开发机器上运行良好,但在 AWS 上却不行。
我尝试设置 tmp 文件夹权限,以便我的用户(ubuntu)是所有者,并且我和 www-data 组都具有 rwx 权限。
我这样做了:
sudo chown -R ubuntu:www-data /var/www/wondermap/html/tmp
sudo find /var/www/wondermap/html/tmp -type d -exec chmod 775 {} \;
sudo find /var/www/wondermap/html/tmp -type f -exec chmod 664 {} \;
并控制一切与我的开发机器相匹配ls -ld tmp/
并确认这一点:
drwxrwxr-x 2 ubuntu www-data 4096 Jan 4 23:04 tmp/
我认为 Unix 端权限应该没问题。
但是,当我尝试使用下载功能时,我得到的只是一个无效的可下载压缩文件,如果我打开它,我可以看到 PHP 的源代码。
我想也许我缺少亚马逊安全组中的某些权限,但我现在陷入了困境。
我已为 HTTP、HTTP 和 SSH 设置了入站规则,并将出站规则留空。此外,我可以确认 aws 上的 apache 用户是 www-data。
正在做:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
输出www-data
。
如果您想查看代码,我可以毫无问题地将其添加到这里,但它在我的开发机器上运行,所以我认为这是一个权限问题。
解决方案
事实证明服务器上没有安装 PHP...
sudo apt install php libapache2-mod-php
sudo systemctl restart apache2