Необходимо пути типа
~/dir1/dir2 развернуть в полные пути с домашней директорией текущего пользователя под которым запущен процесс PHP.
Был испробован вариант:
exec('cd ' . $path . ' && pwd');
Но он почему-то пытается перейти по пути от /root. Хотя если сделать вот так:
exec('whoami && cd ' . $path . ' && pwd', $result);
то в $result whoami выведет корректного пользователя, а cd выведет ошибку что файла или директории не существует. Для корректного пользователя (который в whoami) пути гарантированно существуют и у процесса достаточно прав просмотреть их.