使用 PHP 和 www-data 用户生成的下载文件无效

使用 PHP 和 www-data 用户生成的下载文件无效

我有一个 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

相关内容