У меня было такое же требование несколько лет назад, когда требовалось несколько сценариев PHP для связи с последовательным портом. Первый последовательный порт, как правило, / dev / ttyS0, принадлежит root и находится в групповом соединении.
Для первоначальной настройки я добавил своего пользователя apache в групповой набор. Сценарии PHP могли напрямую общаться с последовательным портом без проблем. Однако только один экземпляр сценария может одновременно открыть последовательный порт, поэтому это решение не может работать.
Затем я создал демон, обеспечивающий слой между последовательным портом и сценариями PHP. Сценарии PHP будут общаться с демоном через именованный канал, а затем демон форматирует запросы и передает их на последовательный порт, выполняя небольшое кэширование.
Итак, либо добавьте www-данные, либо кем бы то ни было ваш пользователь apache, в группу, которой принадлежат эти файлы, предоставив разрешения на выполнение группы, или используйте прокси, как у меня. Если вас беспокоит безопасность, то я бы пошел с последним.