У меня есть экземпляр 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.
Я подумал, что, возможно, мне не хватает некоторых разрешений в группе безопасности Amazon, но я застрял на этом этапе.
Я установил входящие правила для HTTP, HTTP и SSH и оставил исходящие правила пустыми. Кроме того, я могу подтвердить, что мой пользователь apache на aws - это 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