Невозможно создать папку, когда файл загружен с использованием PM2 (nodejs) - PullRequest
0 голосов
/ 23 мая 2019

Цель: создать папку при загрузке файла (изображения)

Справочная информация: Пользователь загружает файл (изображение) с помощью стороннего приложения PHP fileuploader. Как только он загрузит файл на сервер (/ var / www / html / static), в статической папке должна быть создана папка.

Сервер: Ubuntu 18.04.1 LTS

Вебсервер: Апач 2

Настройка разрешений:

drwxrwxr-x  4 www-data  www-data    4096 May 22 21:39 static/

Пользователь: Джон (входит в группу www-данных)

пользователь Джон может создать папку в статической папке, используя:

mkdir foobar

Скрипт: index.js

var chokidar = require('chokidar');
var execSh = require("exec-sh");

chokidar.watch('/var/www/html/static', {
    ignored: /((^|[\/\\])\..|\@)/,
    ignoreInitial: true
}).on('add', path => {
    if (!/(jpe?g|gif|png)$/i.test(path)) return;
    execSh('whoami');
    execSh('mkdir foobar');
})

Проблема:

Если я запускаю этот скрипт, используя:

node index.js

папка (foobar) создана

execSh('whoami'); // john
execSh('mkdir foobar'); // folder created

Если я запускаю этот скрипт, используя:

pm2 start index.js

папка (foobar) не создана.

execSh('whoami'); // john
execSh('mkdir foobar'); // mkdir: cannot create directory 'foobar': Permission denied

pm2 работает с index.js под john user

Если я поменяю разрешения 777 на папку static

drwxrwxrwx  4 www-data  www-data    4096 May 22 21:39 static/

оба узла index.js и pm2 start index.js работают просто отлично

Вопрос: Почему я не могу создать папку с помощью PM2? Работает ли команда в скрипте index.js (execSh ('mkdir foobar')) под каким-либо другим пользователем? В обоих случаях (execSh ('whoami')) возвращает пользователя john. Не понимаю, что происходит под капотом ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...