Я работаю 7.0.28-0ubuntu0.16.04.1, под ЛАМПОЙ, на двух Ubuntu 16.04. Код C, для открытия файла для записи:
#define ERROR_OPENING_FILE -4
fprintf(stderr, "Open output file: /var/www/dropbox/candidates_results.lst.");
if (!(fpOutputFile=fopen("/var/www/dropbox/candidates_results.lst", "w"))){
perror("Error opening output file: ");
throw ERROR_OPENING_FILE;
}
Я называю исполняемый файл, от PHP, со следующим.
$program="/var/www/executables/programName ";
$inFile="/var/www/dropbox/candidates.lst";
$str=$program . " -i " . $inFile;
$Result=exec($str, $output, $return);
После обновления веб-страницы я перехожу к Linux, окружают и входят
cat /var/log/apache2/error.log
Это возвращается
Open output file: /var/www/dropbox/candidates_results.lst.
Error opening output file: : Permission denied
terminate called after throwing an instance of 'int'
Aborted (core dumped)
Когда я вхожу
ls -l /var/www/dropbox/candidates_results.lst
Я добираюсь
-rw-rw-r-- 1 ubuntu www 107 May 20 11:40 /var/www/dropbox/candidates_results.lst
Проблема уходит, если я вхожу
sudo chmod o+w /var/www/dropbox/candidates_results.lst
таким образом, длинный список становится
-rw-rw-rw- 1 ubuntu www 107 May 20 11:40 /var/www/dropbox/candidates_results.lst
Однако www-данные являются членом www группы
$ grep '^www' /etc/group
www-data:x:33:
www:x:1001:ubuntu
Таким образом, кажется, что www-данные должны иметь полномочия группы. Я не вижу, почему я получаю ошибку разрешения записи после ввода
sudo chmod o-w /var/www/dropbox/candidates_results.lst
$ grep '^www' /etc/group www-data:x:33: www:x:1001:ubuntu
Это ясно показывает это www-data
не член www группы. Только ubuntu
член www
группа.
Выполненный
sudo usermod -a -G www www-data
добавить www-data
кому: www
- группа и перезапуск веб-сервер.